U E D R , A S I H C RSS

정모/2022.02.23


1. OMS

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

1.1. 이 주제를 선택한 이유

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

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

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

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

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

1.4. 예시

1.4.1. 프론트엔드

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

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

1.4.2. 백엔드

  1. 계산성능은 딱히 필요없는데, 커스터마이징이 잘 되어야 하고 트래픽을 잘 받아야 하는 경우 -> Nestjs
    이런 경우엔 노드 기반. 노드는 인터프리터 플랫폼을 사용하기에 속도가 빠르진 않음. 하지만 기본적으로 인풋 아웃풋을 잘함.
    (ex. 단순한 서버, 소개팅앱서버 이런건 곱셈, 나눗셈을 막 많이 하지 않음)
  2. 계산 성능도 필요하고 커스터마이징도 잘 되어야 하고, 트래픽도 많이 받아야 함. -> Spring WebFlux
    이런 경우엔 컴파일언어가 좋음. 하지만 c, c++, Rust는 쉽지 않고 자바 계열이 좋음.
    그럼 Kotlin, Java + Spring WebFlux를 사용함.
  3. 프로토타입만 만들어야 함, 시간이 없어서 남이 만든 기능 가져다 써야 함 -> Ruby on Rails, Django
    스타트업에선 3번으로 만들어보고 성공하면 2번으로 넘어가는 식으로 진행되는 경우가 많음.
  4. api 서버만 띄우면 되고 성능이 가장 중요 -> actix(Rust), gin(Go)
    이런 경우엔 네이티브가 Rust와 Go임.

1.4.3. 데이터베이스

  1. 빠른 api 반속이 필요하고 데이터 integration이 깨져도 괜찮은 경우 혹은 schemaless하게 진행하는 경우 -> mongodb
    (ex. 게임 서버.
    -> 반속이 빨라야 함.
    -> integration이 깨져도 괜찮음. -> 서버가 터지거나 아이템이 몇 개 사라져도 엄청난 문제가 생기진 않음(롤백)
    -> schemaless -> 아이템이 계속 추가될 수 있음(무기, 장신구 ... 등등) )
  2. 데이터 integration이 매우 중요한 경우. -> mysql, postgres
    (ex. 은행, 군대의 기록 등)

1.5. Q&A

  1. 정우현 학우님은 어떤 프레임워크를 주로 쓰시나요? (백엔드)
    -> 현업에선 2번을 많이씀. 난 1번을 많이 쓰지만, 2번으로 넘어가려고 하고 있음. 코드를 짤 때는 압도적으로 nextjs를 가장 많이 쓴 거 같음.
  2. 학부생 수준에선 코틀린을 배우지 않아도 기업의 프로젝트에 참여할 수 있을까요?
    -> 프레임워크를 잘 쓰는 것도 중요하지만, 각각의 프레임워크엔 나름의 철학이 있다.
    그걸 이해하는 게 가장 중요하다고 생각함. 그러려면 오랜 기간 공부해야 함.
    디자인 패턴, 데이터 중심 어플리케이션 등을 공부하면 적응하는 데엔 큰 무리가 없을 것이라 생각.
    + 학부생 수준에서 외주를 할 때는 2번은 딱히 필요하지 않음. 다만 취업할 때는 필요함.
  3. 백엔드에서 계산 성능이라는 건 어떤 걸 의미하는 건가요?
    https://avelinorun.medium.com/go-vs-python-more-request-per-second-1ee0ca7e8681
    단순히 http 서버를 띄워서 hello world 화면을 보여주는 예시일 뿐인데도 차이가 크게 나는 것을 확인할 수 있음.

2. 스터디 진행상황

2.1. 너두 리액트 할 수 있어

  • 튜터링은 끝났고 웹사이트 하나 정해서 클론코딩할 예정

2.2. koco

  • 신생 스터디
  • Kotlin Spring 프레임워크 스터디
  • 인원은6명
  • 이번주엔 진행하지 않았음
  • 단톡방 파서 시간 협의할 예정

3. 새싹 교실 홍보 진행상황

3.1. 진행 상황

  • 강사 모집 중.
  • 새싹교실 관련 자세한 내용은 강사 신청서에 있음.
  • 강사 신청서는 제로페이지 공지 단톡방, 21, 20, 19, 18학번 단톡방에 올라가 있음.

3.2. Q&A

  1. 강사 수는 어느 정도로 예상 중인가요?
    한 자리 수로 예상 중. 작년처럼 8명 정도면 적절하지 않나 생각 중. 2월 23일 기준 5명이 지원함.
    -> 새싹이 강사 수보다 너무 많다. 맡아야 할 사람이 많아지는 경우가 있음.. -김은솔
    -> 최대한 많이 뽑겠다. -김도엽
  2. 한명 당 몇명의 멘티를 배정할 예정인가요?
    강사님들의 요청에 따라 배정. 따로 건의사항이 없다면 1/n 생각중.
  3. 강사 한 명당 맡을 수 있는 팀의 제한이 있나요?
    제한은 없음.
  4. 설명회는 언제인가요?
    3월 5일 토요일 예상 중.

5. 댓글

  • 1-2에 3번, 1-3에 3번에
    Rust + ?
  • 라고 써놨는데 ?가 뭔지 모르겠어요. 그리고 각주 다는 법 아시는 분은 공유 부탁드립니다. -김동영
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2022-02-23 10:35:24
Processing time 0.0407 sec