Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백준
- Stack
- was
- stateless
- Gunicorn
- permutations
- stack&que
- algorithm
- Programmers
- Unit Testing
- ORM
- HTTP 완벽 가이드
- TDD
- Git
- dictionary
- postreSQL
- Django
- ws
- utils
- greedy
- stateful
- AWS
- codecov
- Query
- pytest
- combinations
- Bruteforce
- SQL
- Q objects
- Python
Archives
- Today
- Total
해피 코딩!
우아콘2020 - 배민 프론트 서버의 사실과 오해 본문
발표자분이 개발팀을 하며 가졌던 프론트 서버의 사실과 오해를 서술한 발표를 듣고 내용을 정리합니다.
우아콘 발표 자료 youtube 채널
오해 1. 프론트 서버의 기술은 단순하다.
spring 프레임웤을 기본으로 쓸 것 같으며, MVC 패턴을 가졌으며 프론트 서버라하면 대용량 트래픽 부분을 강화하기 위해 redis를 사용하지 않을까라는 생각을 가졌었다.
프론트 서버의 특징
- 수 많은 외부 서비스의 실시간 상태가 필요
- 한 개의 가게 정보를 노출하는데 필요한 외부 요청의 수는 13개 하나의 외부 요청당 50ms였고 이는 총 650ms라는 시간이며 이러한 시간속도는 사용자는 많은 시간이 걸린다고 판단.
- 많은 동시 요청을 수행하기 위해
Async
작업을 선택하게 됨.- 쓰레드 지옥에 빠지게 되었으며 이는
Non-Blocking I/O
를 통해 해결 - 한 개의 쓰레드가 세 개의 요청을 처리
Non-Blocking I/O
는 대기 상황에서 스레드가 차단되지 않고 다른 작업을 수행하며 이는 적은 수의 스레드로 더 많은 처리를 할 수 있다.
- 쓰레드 지옥에 빠지게 되었으며 이는
많은 동시요청, 트래픽, 좋은 사용자 경험이 필요
-> Spring의 MVC - > WebFlux
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. 프론트 서버는 객체, 도메인 중심적인 개발을 할 수 없다.
- 구체적 데이터
저장된 데이터베이스는
A. 데이터는 요구사항에 맞게 가공된 데이터
B. 원본의 형태와 유사한 데이터
의 형태를 가지고 있다.
이후에는 안전적인 데이터와 불안전한 데이터 계층을 설명하시는데 내용에 대한 지식이 부족하여 이해하지 못하였습니다.
Comments