엔지니어링


우디의 AWS re:Invent 2022 Overview

한국신용데이터
2022-12-23
조회수 73




AWS re:Invent 칠판..? 낙서시간이군!?

안녕하세요. 한국신용데이터 마켓플레이스팀 백엔드 엔지니어 woody(정우철)입니다.

최근 진행된 AWS re:Invent를 다녀오면서 느꼈던 현장의 열기와 경험을 공유하고자 합니다. {2022 AWS re:Invent는 라스베이거스에서 진행되었으며 KCD의 8명의 (우수한)엔지니어들과 함께 방문하게 되었습니다}

마음 편하게 읽어주시면 감사드리겠습니다.

re:Invent Start

Venetian Hotel 에 연결된 Expo Center에 있던 AWS 로고

AWS re:Invent에서 지원하는 session들을 듣기 위해서는 등록증을 받아야만 합니다. 이에 8인의 KCD인은 이른 아침(현지 시간 새벽 6시.. 불굴의 KCD인..)부터 나와서 등록 절차를 거친 후 등록증을 얻었습니다. 처음 라스베이거스를 도착했을 때는 몰랐으나, Expo Center 도착 후부터 느껴지는 많은 엔지니어의 열기에 벌써 세션을 듣고 싶은 욕구가 넘쳐흘렀습니다!

re:Invent 등록증 (미리 등록 하지 못한자의 얼굴)

등록증을 얻었으니, 기대되는 세션을 들으러 가볼까요?

session

INFO ) 모든 세션은 AWS event 앱으로 정보가 제공되며, 사전에 한국에서 미리 예약을 하거나, 예약에 실패하더라도 즐겨찾기에 추가한 뒤 세션 시작 30분전부터 현장 줄서기를 하면 들을 수 도 있습니다. 또한 같은 시간대에 원하는 세션이 각기 다른 호텔에서 열리기 때문에 취사 선택을 매우 잘해야 합니다.

백엔드 엔지니어로서 code Provisioning을 위한 IaC, 현재 담당하고 있는 마켓플레이스 사용하는 서비스(IMDG, ELK ..), 평소에 관심있던 ETL 아키텍쳐에 초점에 맞춰 세션을 들으려 하였습니다. 대부분 미리 예약을 하지 못하여, 현장 줄서기 대기로 입장하는 형식으로 세션을 듣게 되었습니다. (지옥의 시작.. 😰)

예약을 못하면 위와 같이 대기하여야 한다…

미리 즐겨 찾기한 세션들을 들으러 갔을때, 위 상황을 마주하고 기다리다가 입장이 불가하다는 이야기를 듣고 돌아서는 발걸음을 자주 경험하곤 했습니다.

제가 들은 세션은 아래와 같습니다

  • Building next-gen applications with event-driven architectures
  • What’s new in Amazon OpenSearch Service
  • Building a successful Korean MMORPG with KakaoGames
  • How Disney used AWS Glue as a data integration and ETL framework
  • How Samsung modernized architecture for real-time analytics
  • AWS infrastructure as code: A year in review
  • What’s new with serverless
  • What’s new and what’s next with Amazon EKS
직접 촬영한 세션내용들

세션을 접하기 전에 저는 “영어듣기 평가 시간이다.. 힘내자.. 일부만이라 들어보자..” 라는 마음으로 듣기 시작하였습니다. 하지만 세션에서 개발 용어(AWS Service, code level .. )가 들리고, 스크린 내용을 보고 이해하면서 세션에 빠져 들게 되었습니다. (영어에 약한사람도 들을 수 있습니다..! 👍 )

위 세션 중 인상깊었던 내용을 대략적으로 빠르게 3개 정도만 설명하고 넘어가고, 감명깊던 Event-Driven architecture를 상세히 설명하고 넘어갈까 합니다.

  1. 마켓플레이스에서도 사용되는 opensearch 에서는 K-NN(faiss) 알고리즘을 이용하여 좀 더 효율적인 유사성 검색 및 클러스터링을 지원한다고 합니다. 또한 opensearch 대시보드를 이용한 비교 및 로그 추적 그리고 로그 테일링(실시간 로그모니터링)을 지원한다고 합니다.
  2. 삼성에서는 smartthing 서비스를 좀 더 빠르고(실시간성) 효과적으로 제공하기 위하여 Apache spark, Apach Flink를 비교하여 Apach Flink로 적용하는 실험기를 보는 것이 인상깊었습니다.
  3. 카카오 게임즈는 ‘오딘’게임에서 엄청난 수의 유저가 동시적으로 보스 레이드(강한 몬스터를 잡는 행위)를 위한 처리 게임서버(싱글코어)를 용도에 따른 멀티스레딩을 통하여 해결하였습니다. 마켓플레이스에서 대량의 순간적인 거래(100원 딜, 쿠폰 제공 등)에 적용해보기 좋은 아키텍쳐로 참고할 수 있을꺼같습니다.

다음세대의 EDA

제가 접했던 세션중에 가장 유익했던 세션을 뽑으라면 위의 세션을 뽑을 수 있을꺼 같습니다. (제일 열정이 넘치던.. 첫날 세션이기도하고..) 엔지니어로서 이벤트 기반의 아키텍처를 생각할 일이 많은데요. AWS 환경에서 좀더 효율적인 방법과 과정을 상세히 설명하는 세션입니다.

Coupling 통합의 마법 단어

기업들의 coupling이란 인식에 대한 개념을 설명하고, 서버와 서버사이, 서버와 저장소 등 모든 곳에서 사용되고 있다는 점을 알려줍니다. 하지만 앞으로의 서비스에서는 Decoupling에 대한 설계를 강조하며 어떻게 해야하는지에 대한 설명을 이어갑니다.

Event Model

Synchronous model 장,단점
Asynchronous model 장,단점
AWS SQS

Synchronous 모델은 Sender에서 Receiver에게 Event를 전달될때, Receiver 가 죽는다면 Event는 손실됩니다.

Asynchronous 모델은 Receiver를 다중으로 둘 수 있으나, 응답이 분산이되고 백로그를 Receiver의 수만큼 관리되어야 합니다.

Get woody’s stories in your inbox

Join Medium for free to get updates from this writer.


Subscribe

AWS SQS는 위 Synchronous, Asynchronous model에 단점을 커버하는 강력한 기능을 가지고 있습니다.

  • 전체 메시지 큐 관리
  • 거의 무한대에 가까운 스케일
  • 간단하고 쉬운 사용성
  • DLQ(dead letter queue)지원
  • 일반적인 형식 및 FIFO option 지원

추가적으로 위 내용에서 설명하는 Synchronous, Asynchronous model에 장/단점을 설명은 개발자가 AWS가 아닌 다른 서비스( e.g) MQ, IMDG … )에서도 많이 느끼는 장점과 단점이라 정확히 인지하고 가시는것을 추천드립니다.

Router Model

point-to-point Router 모델 (sender에 복잡함이 매우 증가)
message-bus router 모델

우리가 router를 구성할때 위 그림처럼 point-to-point 모델을 사용하면 Receiver을 구분하기 위하여 Sender에서는 추가적으로 복잡한 로직을 가지고 있어야 합니다.하지만 message-bus 형태를 사용할때는 bus에서 모든일을 처리하기에 Sender와 Receiver 둘 다에게 부담이 줄어듭니다.
AWS EventBridge는 이러한 message-bus 형태의 Router 역할을 합니다.

  • Sender와 Receiver 둘 다에게 부담이 없음
  • 복잡한 location coupling을 줄임

Sparse event vs full state descriptions

choreograph event 를 이용한 orchestration
Step function
Request/Response

choreograph event란? 발레 무용수들이 자신의 역할을 알고 주변의 다른 무용수에 반응하는 것처럼 시스템 각 부분에 작업 내용을 알리고 세부 사항을 수행하게 하는 것을 뜻합니다.

AWS Step Function을 통하여 각 역할에 맞는 Function을 구성하고, choreograph event를 전달하여 시간 및 비용을 단축시킵니다. 이러한 function들의 request와 response은 위 그림에서 처럼 다양하게 제공되고 있어 입맛에 맞게 사용하면 됩니다.

Better Together

자 합체시간이다!!

Event Model인 AWS SQS, Router Model인 AWS EventBridge, 각 이벤트 구성을 choreograph로 구성하는 Step function을 통하여 앞으로 해가야할 EDA를 구성할 수 있습니다.

Event FailOver (Duplication progress protection)

idempotent? 그게 먼데? 친절히 설명해주는 에릭
idempotency Token

이벤트 처리 중복 방지를 위하여 AWS 측에서 내놓은 결과는 idempotency Token입니다.

idempotency란? 무슨 짓을 하더라고 연산의 결과는 달라지지 않는 성질입니다. 수학을 조금 공부하신 분이라면 이미 많이 들은 ‘멱등성’입니다.

이벤트 처리 중복방지가 왜 필요한가? Sender가 Receiver에게 이벤트를 보냈고 Receiver가 무슨 이유(네트워크 오류, 해킹 등) 이던간에 응답이 오지 않을 경우를 대비하여 필요합니다.

작동원리!(단순히 재요청시에 token을 넣어 재이벤트 처리 방지)
각 서비스별 사용법

SQS사용법

  • cli option으로 — message-deduplication-id “${생성한 token}”을 넣어줍니다
$ aws sqs send-message -queue-url "${URL}" --meesage-deduplication-id "${Token} --message-body "${Body}" --message-group-id ${message-group}"

Step Function — StartExecution 사용법

  • cli option으로 — name “${생성한 token}”을 넣어줍니다
$ aws stepfunctions start-execution --state-machine-arn ${arn} --name "${Token}"

EventBridge PutEvents 사용법

  • payload의 Entries 하위 배열 요소로 EventId : ${token} 을 넣어줍니다.
$ aws events put-events —entries ‘${entries}’ 
{
“Entries”: [
{
“EventId”: “{$Token}”
}
]
}
주의!!
  • 주의! 응답으로 오는 id는 idempotency ID가 아닙니다. (상위 그림 참조)
더 공부해라!

마지막까지 공부시키는 완벽함까지..…


break time & booth tour

듣다가.. 지칠때.. 내게 기대.. 나는 음식부스..

세션을 듣다보면.. 라스베이거스가 얼마나 큰지 느낄 수 있습니다. 하루에 뚜벅..뚜벅.. 2만보 이상을 걸어서 세션을 듣다보면, 점점 지치게 됩니다. 이때 단비같이 내려주는 준비한 커피와 디저트를 무료로 얻을 수 있기에 조금 쉬어 가면서 들으실 수 있습니다.😌😌 (제가 원하는 세션이 있던 두 호텔(MGM 호텔과 Venetian 호텔) 사이 거리는 대략 8km.. 😫)

booth tour(우리 회사에서 쓰는 제품을 담당하는 회사도 보이네요!)

Venetian 호텔에 존재했던 expo-booth에서는 전세계인 회사에서 제품 및 자사를 소개하고 있습니다. IntelliJ IDEA를 개발한 Jetrains 나, devops 플랫폼인 GitLab, KCD에서 모니터링 툴로 사용되는 Sentinel 등..각 booth에서 진행하는 제품 소개나 자사를 소개를 잘 듣다보면, 이쁜 선물들을 한가득 얻으실 수 있습니다.

Booth tour 경품 (왼쪽 바지, 오른쪽 $200 amazon gift card)

위 상품들 말고도 여러 상품들을 얻을 수 있는 기회가 있습니다!

re:Invent End

처음으로 미국이라는 나라에서, 그것도 라스베이거스에서, 세계적인 컨퍼런스 참석이라는 좋은 기회를 함께할 수 있다니 정말 꿈만 같습니다!

상세하게 적지는 못했지만 현지 AWS 직원들과 소통하는 EBC(Executive Briefing Center) meeting, 그리고 직접 제작을 하는 과정인 building 세션 등 다양한 경험이 기다리고 있었고, 내내 보이는 엔지니어들의 열정(앉아서 들은 세션을 정리하거나 직접 구현하고 서로 상호작용을 통하여 얻는 등)에 감흥을 받으며 돌아왔습니다.

개발자로서 정말 좋은 경험과 성장을 이루었다고 생각되며, 내년에도 재참석하고 싶은 컨퍼런스였습니다.

우디 다녀감!

마지막으로 제가 다녀간 흔적을 몰래 남겨둔 사진과 함께 마무리 하겠습니다.읽어 주셔서 감사합니다.









0 0

월간 인기글