Skip to content

JooHyukKim/in-bob-we-trust

 
 

Repository files navigation


"우리가 어떤 민족입니까"
사장님-고객님-라이더님-배달대행사를 잇는 우아한 중계서비스입니다.


🚴 무엇을 경험하려는 건가요?

  • 단위테스트 커버리지 체크 적용 및 유지하기
  • 대용량 트래픽 or 대용량 데이터를 핸들링하는 경험
  • 분산환경에서 여러 서비스들과 통신하는 과정을 경험하기
  • 트래픽 최저점시간 대비 100배까지 증가하는 점심, 저녁 피크타임 트래픽 스파이크를 어떻게 해결할까요?
  • 모든 기능이 탑재된 서비스를 개발하는 것이 아닌, 진화하는 서비스를 경험하기

🚴 서비스는 어떻게 구성되어있나요?



🚴 Wiki


🚴 프로젝트를 통해 해결한 궁금증과 문제들

🚴 //Todo : 프로젝트를 통해 해결하려는 궁금증과 문제들

  • 가용성/Failure
    • 서비스의 가용성을 측정하는 방법은? 또는 서비스에서 만들어 볼 만한 가용성 지표들은?
    • 서비스의 Failure를 최대한 빠르게 감지하는 전략은? 어떤 지표로 Failure를 정의해야하는가?
    • 프로젝트에 적용가능한 Failover 전략들은 무엇이 잇을까? Failover의 성능 최적화 전략은?
    • 주문이 반드시 전달되야하는 중계서비스
    • 현재 서비스의 단일실패지점들은(SPOF)은? 해당 부분들을 어떻게 이중화를 해야하는가? 어떻게 테스트해야하는가?
    • 각 서비스별(info, relay, location, etc....) failover 전략은 무엇이 있을까? 어떻게? 왜?
    • 장애는 예방이 아니라 관리하는 것. 장애에 대응가능한 대응방법을 생각해보자.
  • 테스트
    • 배달의민족 서비스는 최저점 대비 100배까지 증가하는 점심, 저녁 피크타임 트래픽 스파이크를 어떻게 해결할까요?
    • Failover 테스트 작성방법은?
    • Chaos Engineering을 체험해보고 싶다면...?
  • 성능 개선
    • 각 서비스의 스타트업 타입은 얼마나 빨라질 수 있을까?
    • 위치정보서비스의 Redis 캐시는 얼마나 최적화 되어있을까?
    • info,relay 서비스에 적용한 MongoDB는 최선의 선택일까? 다른 Document기반 데이터스토어와 비교했을때 어떤 장단점이 있을까? 다른 데이터스토어와의 차이점은?
    • 라이더위치정보를 Redis 저장하는 것은 어떤 장단점이 있을까? 다른 데이터스토어와의 차이점은?
    • 배달완료된 주문을 분리해야한다면? 배달완료된 주문정보 데이터를 서비스 성능에 부담을 주지않으며 이동시키는 방법은?
    • SpringBoot의 내장 Netty Server는 어떻게 작성되어있지? 내가 직접 NIO 서버를 작성해서 주입하면 지금 성능을 향상 시킬 수 있을까?
  • 서버간 통신
    • 메시지,이벤트 기반 비동기 통신은 왜 장애와 급증하는 트래픽에 강한걸까?
    • 서버간 통신속도를 향상 시키는 방법은 무엇이 있을까?
    • 서버 간 통신을 비동기로 변경하기. - 현재는 Sync 로 구현
    • 기존 성능테스트에서 개선할 점들을 찾아내서 어떤 부분이 느렸고 왜 느렸는지 분석해나가기 (HTTP Duration, API Tracing, etc...)
  • 중개서비스 (Relay-Service)
    • 중개서비스가 다양한 클라이언트에게 이벤트(신규주문접수/라이더배정)를 전달하는 방법은?
  • 라이더 위치정보 서비스를 최적화하려면?
    • 하루 최소 1억건이 발생하는 라이더 위치 정보 데이터는 얼마나 최소화 할 수있을까?
    • 라이더 위치 정보 서비스에 활용가능한 데이터스토어는 무엇이있을까? Redis가 최선인가? Redis의 특징, 트레이드오프, 장단점, 비교대상은? 벤치마크
    • 라이더 위치 정보 데이터는 어떤 방식의 프로토콜을 사용해야 하는가?

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 82.9%
  • JavaScript 9.6%
  • Shell 6.5%
  • Dockerfile 1.0%