More actions
imported>do9013 No edit summary |
No edit summary |
||
| Line 19: | Line 19: | ||
* 보편적인 어플? 모바일 프론트엔드 개발이 처음? -> 크로스 플랫폼 프레임워크 (ex. Flutter) | * 보편적인 어플? 모바일 프론트엔드 개발이 처음? -> 크로스 플랫폼 프레임워크 (ex. Flutter) | ||
* 웹모바일 프론트엔드 개발 많이 해봤다?-> 웹 앱 (ex. Nextjs) | * 웹모바일 프론트엔드 개발 많이 해봤다?-> 웹 앱 (ex. Nextjs) | ||
'''디테일한 예시''' | '''디테일한 예시''' | ||
* 소개팅앱을 만들고 싶음 -> 매칭 풀이 많아야 함 -> 안드로이드에만 내면 안 됨 -> 크로스플랫폼 선택 | * 소개팅앱을 만들고 싶음 -> 매칭 풀이 많아야 함 -> 안드로이드에만 내면 안 됨 -> 크로스플랫폼 선택 | ||
* 크로스플랫폼을 사용하고 싶은데, 성능이 필요함 -> 어쩔 수 없이 네이티브로 개발. | * 크로스플랫폼을 사용하고 싶은데, 성능이 필요함 -> 어쩔 수 없이 네이티브로 개발. | ||
* 웹 앱은, 프론트엔드에선 언젠간 쓰게 돼있음. 나중에 다른 주제로 얘기해볼 예정. | * 웹 앱은, 프론트엔드에선 언젠간 쓰게 돼있음. 나중에 다른 주제로 얘기해볼 예정. | ||
=== 백엔드 === | |||
# 계산성능은 딱히 필요없는데, 커스터마이징이 잘 되어야 하고 트래픽을 잘 받아야 하는 경우 -> Nestjs | |||
이런 경우엔 노드 기반. 노드는 인터프리터 플랫폼을 사용하기에 속도가 빠르진 않음. 하지만 기본적으로 인풋 아웃풋을 잘함. | |||
(ex. 단순한 서버, 소개팅앱서버 이런건 곱셈, 나눗셈을 막 많이 하지 않음) | |||
# 계산 성능도 필요하고 커스터마이징도 잘 되어야 하고, 트래픽도 많이 받아야 함. -> Spring WebFlux | |||
이런 경우엔 컴파일언어가 좋음. 하지만 c, c++, Rust는 쉽지 않고 자바 계열이 좋음. | |||
그럼 Kotlin, Java + Spring WebFlux를 사용함. | |||
# 프로토타입만 만들어야 함, 시간이 없어서 남이 만든 기능 가져다 써야 함 -> Ruby on Rails, Django | |||
스타트업에선 3번으로 만들어보고 성공하면 2번으로 넘어가는 식으로 진행되는 경우가 많음. | |||
# api 서버만 띄우면 되고 성능이 가장 중요 -> actix(Rust), gin(Go) | |||
이런 경우엔 네이티브가 Rust와 Go임. | |||
=== 데이터베이스 === | |||
1.빠른 api 반속이 필요하고 데이터 인테그레이션이 깨져도 괜찮은 경우 혹은 schemaless하게 진행하는 경우 -> mongodb | |||
(ex. 게임 서버. | |||
-> 반속이 빨라야 함. | |||
-> integration이 깨져도 괜찮음. -> 서버가 터지거나 아이템이 몇 개 사라져도 엄청난 문제가 생기진 않음(롤백) | |||
-> schemaless -> 아이템이 계속 추가될 수 있음(무기, 장신구 ... 등등)) | |||
# 데이터 integration이 매우 중요한 경우. -> mysql, postgres | |||
(ex. 은행, 군대의 기록 등) | |||
== 좋은 프레임워크는 상황마다 다르다 == | == 좋은 프레임워크는 상황마다 다르다 == | ||
# 혼자서 다 개발해야 하고, 보편적인 서비스 어플(ex. 홈페이지, 거래 플랫폼, 소개팅 앱, 카페 예약 시스템 등 현실의 개념을 가져와서 개발하는 유형)을 만드는 경우는 성능이 좀 떨어지더라도 기본적인 기능이 갖춰진 프레임워크가 좋음. | # 혼자서 다 개발해야 하고, 보편적인 서비스 어플(ex. 홈페이지, 거래 플랫폼, 소개팅 앱, 카페 예약 시스템 등 현실의 개념을 가져와서 개발하는 유형)을 만드는 경우는 성능이 좀 떨어지더라도 기본적인 기능이 갖춰진 프레임워크가 좋음. | ||
# 복잡한 비즈니스 로직이 필요하교, 방대한 코드를 다뤄야 하는 경우 코드의 재사용을 잘 지원해주는 데코레이터나 코드 제네레이션을 잘 지원해주는 cli가 잘 지원되는 프레임워크가 좋을 수 있음. (ex. nestjs) | # 복잡한 비즈니스 로직이 필요하교, 방대한 코드를 다뤄야 하는 경우 코드의 재사용을 잘 지원해주는 데코레이터나 코드 제네레이션을 잘 지원해주는 cli가 잘 지원되는 프레임워크가 좋을 수 있음. (ex. nestjs) | ||
# 극한의 성능이 필요한 경우, 인기가 없고 구현 예시가 없는 힙한 프레임워크로 갈 수 있음. (언급했던 러스트 + ??? 시리즈가 그럼) | # 극한의 성능이 필요한 경우, 인기가 없고 구현 예시가 없는 힙한 프레임워크로 갈 수 있음. (언급했던 러스트 + ??? 시리즈가 그럼) | ||
= 참가자 = | == 참가자 == | ||
[[김동영]] [[정우현]] [[김도엽]] [[김동욱]] [[김은솔]] [[김휘경]] [[이민욱]] [[최민준]] [[한재민]] | [[김동영]] [[정우현]] [[김도엽]] [[김동욱]] [[김은솔]] [[김휘경]] [[이민욱]] [[최민준]] [[한재민]] | ||
= 댓글 = | = 댓글 = | ||
Revision as of 10:08, 23 February 2022
OMS
이 주제를 선택한 이유
소프트웨어 마에스트로 같은 프로젝트를 할 때, 프로젝트 계획서를 많이 쓸 텐데 그때 잘 설명하기 위해서. 특정 프레임워크를 고른 이유를 잘 설득할 수 있어야 함.
프레임워크를 고민해서 고르는 이유는 뭘까?
- 한번 결정하면 바꾸는 데에 시간과 비용이 많이 듦.
- 프레임워크에 따라 개발 속도, 성능, 비용의 차이가 날 수 있음.
- 프레임워크를 처음 골라보는 사람들은, 고성능이 최고라고 생각함. 하지만 필요 이상의 고성능을 추구하면, 개발 속도가 저하되거나 팀원을 뽑기 어려워질 수 있음. (ex. 러스트 + ?)
- 성능만을 추구하다가 대용량 트래픽을 못 견디게 되는 경우가 발생할 수도 있음.
예시
프론트엔드
- 머러가 필요한 어플, 동영상을 편집하고 수정하는 어플 -> 고성능이 필요 -> 네이티브 애플리케이션으로 개발해야함(안드로이드, 스위프트 ios)
- 보편적인 어플? 모바일 프론트엔드 개발이 처음? -> 크로스 플랫폼 프레임워크 (ex. Flutter)
- 웹모바일 프론트엔드 개발 많이 해봤다?-> 웹 앱 (ex. Nextjs)
디테일한 예시
- 소개팅앱을 만들고 싶음 -> 매칭 풀이 많아야 함 -> 안드로이드에만 내면 안 됨 -> 크로스플랫폼 선택
- 크로스플랫폼을 사용하고 싶은데, 성능이 필요함 -> 어쩔 수 없이 네이티브로 개발.
- 웹 앱은, 프론트엔드에선 언젠간 쓰게 돼있음. 나중에 다른 주제로 얘기해볼 예정.
백엔드
- 계산성능은 딱히 필요없는데, 커스터마이징이 잘 되어야 하고 트래픽을 잘 받아야 하는 경우 -> Nestjs
이런 경우엔 노드 기반. 노드는 인터프리터 플랫폼을 사용하기에 속도가 빠르진 않음. 하지만 기본적으로 인풋 아웃풋을 잘함. (ex. 단순한 서버, 소개팅앱서버 이런건 곱셈, 나눗셈을 막 많이 하지 않음)
- 계산 성능도 필요하고 커스터마이징도 잘 되어야 하고, 트래픽도 많이 받아야 함. -> Spring WebFlux
이런 경우엔 컴파일언어가 좋음. 하지만 c, c++, Rust는 쉽지 않고 자바 계열이 좋음. 그럼 Kotlin, Java + Spring WebFlux를 사용함.
- 프로토타입만 만들어야 함, 시간이 없어서 남이 만든 기능 가져다 써야 함 -> Ruby on Rails, Django
스타트업에선 3번으로 만들어보고 성공하면 2번으로 넘어가는 식으로 진행되는 경우가 많음.
- api 서버만 띄우면 되고 성능이 가장 중요 -> actix(Rust), gin(Go)
이런 경우엔 네이티브가 Rust와 Go임.
데이터베이스
1.빠른 api 반속이 필요하고 데이터 인테그레이션이 깨져도 괜찮은 경우 혹은 schemaless하게 진행하는 경우 -> mongodb
(ex. 게임 서버.
-> 반속이 빨라야 함. -> integration이 깨져도 괜찮음. -> 서버가 터지거나 아이템이 몇 개 사라져도 엄청난 문제가 생기진 않음(롤백) -> schemaless -> 아이템이 계속 추가될 수 있음(무기, 장신구 ... 등등))
- 데이터 integration이 매우 중요한 경우. -> mysql, postgres
(ex. 은행, 군대의 기록 등)
좋은 프레임워크는 상황마다 다르다
- 혼자서 다 개발해야 하고, 보편적인 서비스 어플(ex. 홈페이지, 거래 플랫폼, 소개팅 앱, 카페 예약 시스템 등 현실의 개념을 가져와서 개발하는 유형)을 만드는 경우는 성능이 좀 떨어지더라도 기본적인 기능이 갖춰진 프레임워크가 좋음.
- 복잡한 비즈니스 로직이 필요하교, 방대한 코드를 다뤄야 하는 경우 코드의 재사용을 잘 지원해주는 데코레이터나 코드 제네레이션을 잘 지원해주는 cli가 잘 지원되는 프레임워크가 좋을 수 있음. (ex. nestjs)
- 극한의 성능이 필요한 경우, 인기가 없고 구현 예시가 없는 힙한 프레임워크로 갈 수 있음. (언급했던 러스트 + ??? 시리즈가 그럼)