프로젝트의 고려사항

  • 리소스(서버, 다루는 것-공유자원, DB, 마감 기한, 학습비용 등) 고려
  • 기술 선택
  • 프로젝트 구현, 스코프
  • 테스트 코드

내가 바라는 개발자의 모습

  • 커뮤니케이션이 활발한 개발자 (컨벤션, 프로젝트 주요사항- README.md)
  • 생각/사고하는 개발자
  • 더 나아지는 개발자
  • 항상 서비스의 확장성에 대해 고려하는 개발자

그게 프로덕트를 서비스답게 만들어? 그래서 뭐 어따 쓸 건데? **꼭 해야해?**

  • 프로덕트에서 00작업/개선이
  1. 왜 필요한지에 대한 고찰(목적, 주요 사용자 시나리오-서비스 핵심기능)
  2. 어떤 것(지표)을 어떻게(기술, 모니터링 방법, 테스트케이스) 확인할 것인지 고민
  3. 개선 방향에 대한 고민 (원인 파악에 따른 여러가지 방법 고려, 해당 방법에 대한 일반적인 장단점뿐만 아니라 그게 우리 프로젝트에 어떤면이 적합하기 때문에)

이렇게 고민하면서 프로젝트 진행하자

  • 기본 준수 : 공식 문서를 읽는
  • RESTful API :선택이지만 기본) API 문서 자동화 (Swagger, Spring Rest Docs)
  • DB :
    • 정규화 / 비정규화 -> 어떤 게 ORM 으로 개발하기 편할까?
    • 인덱싱
  • DB replication
  • 웹 개발자로 기본
    • HTTP Method / status code 처리 (웹 표준 이해 / 공식 문서를 보고 주요 항목 이해가 가능한가 )
    • 서버 (stateless) - 여러 서버가 있다면 어떻게 아키텍쳐를 짜야할까
    • 3 Tier architecture 맞게 패키지 만들기. (기본적인 설명과 why 방식으로 작성하는지)
  • 협업 - 코드 관리 (나만 볼 수 있는 코드가 아니라 '우리' 코드로 만들기)
    • 코딩 컨벤션 (정적분석도구 lint 를 쓰면 편함)
    • git repo 관리 (프로젝트 소개 - README.md / branch 전략 - github flow)
    • git commit - 누가 어떤 기능을 개발했는가? 히스토리 관리, 버그 트래킹 (commit msg 컨벤션 )
  • 프로젝트 설계
    • 기술 선택 이유 (어떤 어떤 부분을 고려해서 이런 방법을 사용했고 그래서 어떻게 되었다 - 일부 채팅 기능, MSA )
  • 트러블슈팅
    • 어떤 상황이 발생했고, 어떤 어떤 방법을 비교했고, 어떤 이유로 이 방법을 적용해서 무엇을 개선했다
    • 내가 무얼 몰라서 찾아봤더니 00방법(공식문서가 아닌 블로그 등 공식 레퍼런스로 부를 수 없는 것)인 거 같아서 고쳐봤더니 동작했다.(X / 트러블슈팅이 아니라 그냥 몰랐던 것임)
    • 리팩토링
  • 서비스 안정성 (테스트 - 서비스가 제대로 동작하는가? 검증)
    • 서비스 사용시 주요 시나리오는 어떻게 되는가?
    • 단위테스트(코드)
    • API 테스트
    • 만약 10000명의 동시접속자가 있다면 서비스가 어떻게 될까? 만약 십만 건의 데이터가 있다면 신경써야할 부분이 뭘까?
    • 서버 부하 테스트 (여기까지 가능할지는 모르겠는데 만들어둔 자료 [공개] 서버 부하 테스트 Server Load Test
    • 보안 101 (이건 못할 수도 있음 [공개]Product Challenge 101 - Security
  • 채팅과 영상 스트리밍에 기본이 되는 기술에 대한 이해
    • 예를 들면, 웹소켓(채팅)에서는 적어도 웹 소켓과 STOMP 의 구현에서 차이
    • Java,Spring 이나 JPA 사용시에 많이 물어보는 질문
  • Java
    • custom Exception (왜 해야하는지 이유)
    • Entity 설계 어떻게 했는지
    • 왜 라이브러리를 사용하지 않았는가 (Komoran 제외하고 자바 코드로 작성한 이유 등)
  • Spring
    • annotation 를 DI 와 연관시켜서 설명
    • GoF 디자인패턴과 Spring 연관관계
  • JPA
    • 계층 DB
    • 기본 이슈 겪어봤는지 - 정규화/비정규화 연결시켜서 순환참조 등
    • 기본 Spring Data JPA 를 사용할 경우 왜 사용했는지, 두 기술의 차이가 무엇인지
    • (코드레벨 에서 리뷰도 진행함)

+ Recent posts