-
Notifications
You must be signed in to change notification settings - Fork 2
프로젝트 기획
이지표 edited this page Aug 29, 2024
·
8 revisions
- 사람들이 사용하지 않을 프로젝트를 만드는 건 지루하고 괴로운 일 입니다.
- 기능보다는 기술
- 캠프를 끝나고 공부할 내용을 알아가자
- 하나의 앱을 만드는데 많은 개발자들은 무슨 일을 하고 있을까?
- 기능 하나에 하나의 팀
- 배달의 민족에서는 다양한 서비스들이 존재
- 그 중에서 사용자들이 주문하기 위해 행하는 첫 동작인 가게 찾기 기능
- 배달의 민족은 2020년 기준 가게 목록 검색에 15,000 TPS 발생
- 어떻게 하는거지?
- 여러 문제 상황을 직접 겪어보면서 해결해보자!
- 기능이나 사용하는 기술을 점진적으로 발전시켜 보자
- 변경, 수정에 열려있는 코드, 구조를 설계
- 프로젝트 초기에 전체 과제를 정해두지 않고 돌아가는 프로그램을 만드는 사이클을 짧게 잡고 사이클이 끝날 때 마다 다음 해야할 일을 정하는 방식
- 가게, 메뉴, 리뷰 등록/수정/조회
- 키워드 입력 -> 해당하는 가게&메뉴 찾기
- 배달 가능 지역&키워드를 입력 -> 해당하는 가게&메뉴 찾기
- ToDo
- 서버 분리, 메세지큐 도입, 데이터 베이스 분리, CQRS 패턴
-
멀티 모듈
- 실험시 변경되는 인프라에 대해 코드 변경 최소화
- 인터페이스와 모듈을 이용
-
이벤트 발행 방식
- loose coupling
-
MySQL Index performance
-
Elastic Search query vs MySQL Like
-
생각지도 못한 이슈 발생
- 리뷰 수 증가 동시성 이슈
- cache
- join 을 자주하는게 싫다
- 가게목록 서비스가 search service 와 cache service 를 이용하는 형태로 변경
- 서버로 분리
- 공부 목적, 다양한 외부 서버로 부터 데이터를 취합하는 상황을 만들어 보고 싶었다
- 그렇다면 엔터프라이즈 애플리케이션은 왜 분리할까? 고민해본 결론
- 비동기 호출
- RestTemplate, HttpClient, WebClient, Virtual Thread
- 서킷 브레이커
- ToDo
- DB 분리
- 외부 메세지 큐 서비스 도입
- Elastic Search bulk update