이마트 Tech Lead
<1> 이마트와 모바일앱
<2> 포인트, 페이, 와인그랩 추가 필요
<3> 리뷰기능 확대 -- 대량의 데이터 처리 요구 증가
<4> 마이크로 서비스로 변경됨으로 나빠지는것
<5> IAC 사용
<6> 모니링과 로깅
<7> 실습
<1> 이마트와 모바일앱
1
이마트에 사람이 늘면 줄을 서야 한다.
일반적인 온라인 쇼핑몰은 줄을 서지 않는다.
2
아키텍처 변화- 확장성을 위한 마이그레이션
Why?
온프레미스 환경의 확장성 제약
변경 ?
ECS Fargate 사용함.
마트는 밤 11시가 넘어가면 트래픽이 줄어들어 TASK 줄임
프론트엔드 변경 ? Cloudfront------S3 로 변경
온프레미스와 다이렉트 커넥트 사용 , TGW사용
<2> 포인트, 페이, 와인그랩 추가 필요
1
기존
분석하기 어려운 옛날 코드
2
변경
마이크로 서비스 아키텍처 구조로 변경함.
ECS기반의 새로운 마이크로 서비스 아키텍처로 변경
모바일 클라이언트---------NLB-----ALB-----ECS 클러스터
<3> 리뷰기능 확대 -- 대량의 데이터 처리 요구 증가
1
다이나모 디비 도입
2
다이나모 디비 단점?
집계성 쿼리는 적합하지 않음. 카운트는 적합하지 않음.
그래서, 다이나모 디비 스트림을 사용함.
다이나모 디비 스트림은 변경된 데이터 셋을 지속적으로 전달하는 CDC기능.
람다를 통해 집계해서 엘라스틱 캐쉬에 저장함.
집계성 데이터는 엘라스틱 캐쉬 사용함.
<4> 마이크로 서비스로 변경됨으로 나빠지는것
1
시스템의 복잡성이 높아짐.
로컬 호출이 리모트 호출로 변경됨.
분산 호출 구조로 장애
2
개선은?
싱크방식 개선 ?
특정 임계치 이상 페일은 더 호출하지 않음.
서킷 브레이커 패턴.
Resilience4j 사용해 적용함.
Async 방식 개선 ?
중간에 Kinesis Data Streams 사용.
장애시 Kinesis Data Streams 데이터 저장.
복구가 되면 Kinesis Data Streams 데이터 가져옴.
<5> IAC 사용
1
신규 마이크로 서비스의 잦은 생성
2
CloudFormation 사용중.
서비스 카탈로그 사용중.
3
빠른시간 내에 만들어 냄.
수작업으로 인한 문제 없음.
<6> 모니링과 로깅
아키텍처 ?
ECS Task 안에 컨테이너 ---JVM app, java-agent(datadog)
java-agent(datadog) -------metrics --------------container -------datadog agent--------datadog
java-agent(datadog) -------stdout/stderr--------container ----firelens--------kinesis firehose----------datadog
<7> 실습
https://brunch.co.kr/@topasvga/1769
https://brunch.co.kr/@topasvga/2086
https://brunch.co.kr/@topasvga/1781
https://brunch.co.kr/@topasvga/2882
감사합니다.