프로젝트의 고려사항
- 리소스(서버, 다루는 것-공유자원, DB, 마감 기한, 학습비용 등) 고려
- 기술 선택
- 프로젝트 구현, 스코프
- 테스트 코드
내가 바라는 개발자의 모습
- 커뮤니케이션이 활발한 개발자 (컨벤션, 프로젝트 주요사항- README.md)
- 생각/사고하는 개발자
- 더 나아지는 개발자
- 항상 서비스의 확장성에 대해 고려하는 개발자
그게 프로덕트를 서비스답게 만들어? 그래서 뭐 어따 쓸 건데? **꼭 해야해?**
- 프로덕트에서 00작업/개선이
- 왜 필요한지에 대한 고찰(목적, 주요 사용자 시나리오-서비스 핵심기능)
- 어떤 것(지표)을 어떻게(기술, 모니터링 방법, 테스트케이스) 확인할 것인지 고민
- 개선 방향에 대한 고민 (원인 파악에 따른 여러가지 방법 고려, 해당 방법에 대한 일반적인 장단점뿐만 아니라 그게 우리 프로젝트에 어떤면이 적합하기 때문에)
이렇게 고민하면서 프로젝트 진행하자
- 기본 준수 : 공식 문서를 읽는 것
- 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 를 사용할 경우 왜 사용했는지, 두 기술의 차이가 무엇인지
- (코드레벨 에서 리뷰도 진행함)
'코코딩딩의 공부' 카테고리의 다른 글
[Spring] 스프링 공식문서에서 생성자 주입 권고하는 이유는? (0) | 2023.06.01 |
---|---|
[Spring] 생성자 주입, 세터주입, 필드주입에 대해 알아보자 (0) | 2023.06.01 |
상속공부 (0) | 2023.04.20 |
[CS]프로세스,스레드,멀티태스킹,멀티스레딩,멀티프로세싱,멀티프로그래밍 (0) | 2023.04.12 |