해피 코딩!

우아콘2020 - 배민 프론트 서버의 사실과 오해 본문

카테고리 없음

우아콘2020 - 배민 프론트 서버의 사실과 오해

지속가능한 성장을 2020. 12. 18. 09:32

발표자분이 개발팀을 하며 가졌던 프론트 서버의 사실과 오해를 서술한 발표를 듣고 내용을 정리합니다.

우아콘 발표 자료 youtube 채널

오해 1. 프론트 서버의 기술은 단순하다.

spring 프레임웤을 기본으로 쓸 것 같으며, MVC 패턴을 가졌으며 프론트 서버라하면 대용량 트래픽 부분을 강화하기 위해 redis를 사용하지 않을까라는 생각을 가졌었다.

프론트 서버의 특징

  1. 수 많은 외부 서비스의 실시간 상태가 필요
    • 한 개의 가게 정보를 노출하는데 필요한 외부 요청의 수는 13개 하나의 외부 요청당 50ms였고 이는 총 650ms라는 시간이며 이러한 시간속도는 사용자는 많은 시간이 걸린다고 판단.
    • 많은 동시 요청을 수행하기 위해 Async 작업을 선택하게 됨.
      • 쓰레드 지옥에 빠지게 되었으며 이는 Non-Blocking I/O를 통해 해결
      • 한 개의 쓰레드가 세 개의 요청을 처리
      • Non-Blocking I/O는 대기 상황에서 스레드가 차단되지 않고 다른 작업을 수행하며 이는 적은 수의 스레드로 더 많은 처리를 할 수 있다.

많은 동시요청, 트래픽, 좋은 사용자 경험이 필요 -> Spring의 MVC - > WebFlux

  1. MSA 의 최전방
    배달의 민족 팀은 총 4개의 데이터베이스를 사용

    A. DynamoDB (Document) B.DocumentDB(mongo) (Document)C.RDS (Relational) D.ElasticCache(redis) (key-value)

ㄱ. 대용량 데이터 저장 D
ㄴ. 빠른 응답 D
ㄷ. 운영 이슈 해소를 위한 질의
ㄹ. 운영 이슈 해소를 위해 이벤트 기록
ㅁ. 노출을 위한 데이터 메타 데이터를 관리

사용자를 위한 요구사항을 바라보았을 때 ㄱ, ㄴ가 중요하였으며 D를 활용하기 위해 최전방 layer에 배치하였다.

운영관점에서 보았을 때 ㄱ, ㄷ가 중요하였으며 B를 선택하게 된다. 제일 앞단의 뒤에 배치한다.

자체적인 데이터를 가지고 ㅁ 해야 하였기 때문에 C를 선택하고 NIO를 지원하지 않기 때문에 메모리 위에 올려 사용하게 되었다.

오해 2. 프론트 서버는 객체, 도메인 중심적인 개발을 할 수 없다.

  1. 구체적 데이터
    저장된 데이터베이스는
    A. 데이터는 요구사항에 맞게 가공된 데이터
    B. 원본의 형태와 유사한 데이터
    의 형태를 가지고 있다.

이후에는 안전적인 데이터와 불안전한 데이터 계층을 설명하시는데 내용에 대한 지식이 부족하여 이해하지 못하였습니다.

Comments