Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

정모/2022.02.23: Difference between revisions

From ZeroWiki
No edit summary
No edit summary
Line 26: Line 26:
=== 백엔드 ===
=== 백엔드 ===
# 계산성능은 딱히 필요없는데, 커스터마이징이 잘 되어야 하고 트래픽을 잘 받아야 하는 경우 -> Nestjs
# 계산성능은 딱히 필요없는데, 커스터마이징이 잘 되어야 하고 트래픽을 잘 받아야 하는 경우 -> Nestjs
이런 경우엔 노드 기반. 노드는 인터프리터 플랫폼을 사용하기에 속도가 빠르진 않음. 하지만 기본적으로 인풋 아웃풋을 잘함.
이런 경우엔 노드 기반. 노드는 인터프리터 플랫폼을 사용하기에 속도가 빠르진 않음. 하지만 기본적으로 인풋 아웃풋을 잘함.
(ex. 단순한 서버, 소개팅앱서버 이런건 곱셈, 나눗셈을 막 많이 하지 않음)
(ex. 단순한 서버, 소개팅앱서버 이런건 곱셈, 나눗셈을 막 많이 하지 않음)
# 계산 성능도 필요하고 커스터마이징도 잘 되어야 하고, 트래픽도 많이 받아야 함. -> Spring WebFlux
# 계산 성능도 필요하고 커스터마이징도 잘 되어야 하고, 트래픽도 많이 받아야 함. -> Spring WebFlux
이런 경우엔 컴파일언어가 좋음. 하지만 c, c++, Rust는 쉽지 않고 자바 계열이 좋음.
이런 경우엔 컴파일언어가 좋음. 하지만 c, c++, Rust는 쉽지 않고 자바 계열이 좋음.

Revision as of 10:08, 23 February 2022

OMS

  • 정우현 학우님: 프레임워크 고르는 방법
    • 다음 주자는 김동욱 학우님 (2022.03.02)
    • 그 다음 주자는 이민욱 학우님 (2022.03.09)

이 주제를 선택한 이유

소프트웨어 마에스트로 같은 프로젝트를 할 때, 프로젝트 계획서를 많이 쓸 텐데 그때 잘 설명하기 위해서. 특정 프레임워크를 고른 이유를 잘 설득할 수 있어야 함.

프레임워크를 고민해서 고르는 이유는 뭘까?

  1. 한번 결정하면 바꾸는 데에 시간과 비용이 많이 듦.
  2. 프레임워크에 따라 개발 속도, 성능, 비용의 차이가 날 수 있음.
  3. 프레임워크를 처음 골라보는 사람들은, 고성능이 최고라고 생각함. 하지만 필요 이상의 고성능을 추구하면, 개발 속도가 저하되거나 팀원을 뽑기 어려워질 수 있음. (ex. 러스트 + ?)
  4. 성능만을 추구하다가 대용량 트래픽을 못 견디게 되는 경우가 발생할 수도 있음.

예시

프론트엔드

  • 머러가 필요한 어플, 동영상을 편집하고 수정하는 어플 -> 고성능이 필요 -> 네이티브 애플리케이션으로 개발해야함(안드로이드, 스위프트 ios)
  • 보편적인 어플? 모바일 프론트엔드 개발이 처음? -> 크로스 플랫폼 프레임워크 (ex. Flutter)
  • 웹모바일 프론트엔드 개발 많이 해봤다?-> 웹 앱 (ex. Nextjs)

디테일한 예시

  • 소개팅앱을 만들고 싶음 -> 매칭 풀이 많아야 함 -> 안드로이드에만 내면 안 됨 -> 크로스플랫폼 선택
  • 크로스플랫폼을 사용하고 싶은데, 성능이 필요함 -> 어쩔 수 없이 네이티브로 개발.
  • 웹 앱은, 프론트엔드에선 언젠간 쓰게 돼있음. 나중에 다른 주제로 얘기해볼 예정.

백엔드

  1. 계산성능은 딱히 필요없는데, 커스터마이징이 잘 되어야 하고 트래픽을 잘 받아야 하는 경우 -> Nestjs
이런 경우엔 노드 기반. 노드는 인터프리터 플랫폼을 사용하기에 속도가 빠르진 않음. 하지만 기본적으로 인풋 아웃풋을 잘함.
(ex. 단순한 서버, 소개팅앱서버 이런건 곱셈, 나눗셈을 막 많이 하지 않음)
  1. 계산 성능도 필요하고 커스터마이징도 잘 되어야 하고, 트래픽도 많이 받아야 함. -> Spring WebFlux

이런 경우엔 컴파일언어가 좋음. 하지만 c, c++, Rust는 쉽지 않고 자바 계열이 좋음. 그럼 Kotlin, Java + Spring WebFlux를 사용함.

  1. 프로토타입만 만들어야 함, 시간이 없어서 남이 만든 기능 가져다 써야 함 -> Ruby on Rails, Django

스타트업에선 3번으로 만들어보고 성공하면 2번으로 넘어가는 식으로 진행되는 경우가 많음.

  1. api 서버만 띄우면 되고 성능이 가장 중요 -> actix(Rust), gin(Go)

이런 경우엔 네이티브가 Rust와 Go임.

데이터베이스

1.빠른 api 반속이 필요하고 데이터 인테그레이션이 깨져도 괜찮은 경우 혹은 schemaless하게 진행하는 경우 -> mongodb

(ex. 게임 서버.

-> 반속이 빨라야 함.
-> integration이 깨져도 괜찮음. -> 서버가 터지거나 아이템이 몇 개 사라져도 엄청난 문제가 생기진 않음(롤백)
-> schemaless -> 아이템이 계속 추가될 수 있음(무기, 장신구 ... 등등))
  1. 데이터 integration이 매우 중요한 경우. -> mysql, postgres

(ex. 은행, 군대의 기록 등)

좋은 프레임워크는 상황마다 다르다

  1. 혼자서 다 개발해야 하고, 보편적인 서비스 어플(ex. 홈페이지, 거래 플랫폼, 소개팅 앱, 카페 예약 시스템 등 현실의 개념을 가져와서 개발하는 유형)을 만드는 경우는 성능이 좀 떨어지더라도 기본적인 기능이 갖춰진 프레임워크가 좋음.
  2. 복잡한 비즈니스 로직이 필요하교, 방대한 코드를 다뤄야 하는 경우 코드의 재사용을 잘 지원해주는 데코레이터나 코드 제네레이션을 잘 지원해주는 cli가 잘 지원되는 프레임워크가 좋을 수 있음. (ex. nestjs)
  3. 극한의 성능이 필요한 경우, 인기가 없고 구현 예시가 없는 힙한 프레임워크로 갈 수 있음. (언급했던 러스트 + ??? 시리즈가 그럼)

참가자

김동영 정우현 김도엽 김동욱 김은솔 김휘경 이민욱 최민준 한재민

댓글