23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
이번 데보션에서 진행한 테크데이에 "LLM 에듀뱅크"로 전시하였는데, 데모 시연을 위해 인프라 환경을 AWS 클라우드의 serverless로 구축하였다.
프로젝트 관련 질문 중 아키텍처 구성에 대한 질문들이 은근히(?) 있어서 이를 간결하게 기록하려 한다.
참고로 본인은 웹 개발 및 Backend 개발 베이스여서 AWS 관련된 인프라 개발로만 서브로 업무 경험을 해보았지,
지금처럼 Devops Engineer로 활동한거는 2~3년 정도 밖에 안된다. (해당 경력도 지금 회사 다니면서 본격적으로 AWS 업무를 한 것이라 찐으로 보면 데브린이(?)이긴 하다...)
그래서 관련 내용이 상대적으로 전문적이지 못할 수 있겠지만, 내가 진행한 프로젝트를 회고할 겸 Cloud 관련 Engineer로 고민 중인 뉴비분들께 최대한 이해할 수 있도록 기록해 보려한다.
LLMEdubank는 Serverless 기반 아키텍처로 구성하였으며, 이를 위해 3-Tier 구성에 필요한 AWS Managed Service를 사용하였다.
Managed Service란 오픈소스/상용 등의 다양한 어플리케이션에 대하여 AWS의 검증을 통해 사용자에게 제공하는 서비스를 말하며,
"Managed"란 용어의 의미처럼, 인프라 및 소프트웨어에 대한 유지보수 및 운영 주체는 AWS에서 주관한다.
오픈소스/상용 어플리케이션의 구축과 운영에 어려움을 겪거나 운영 노하우를 가지고 있지 않은 수 많은 기업들에게는 이러한 서비스가 큰 메리트로 다가왔으며,
운영 전략에 따라 비용이 상대적으로 비싸질 수 있다는 것은 단점으로 다가올 수 있다.
이번 Toy Project에는 MVP 어플리케이션 특성을 고려하여 최소화된 비용으로 시스템을 구축하고 싶어,
Serverless 기반 서비스로 구축하는 것을 최종 결정하였고, DB의 경우 기술 외 필요한 부분을 지원 받아 구성하였다.
(이를 위해 EC2를 지원해주신 토이 프로젝트 세션 호스트이신 SKT의 김한성님께 감사드립니다.^^)

① S3에 구축되어 있는 LLMEdubank 관리자 시스템을 통해 사용자가 입력한 프롬프트를 "LLM 프롬프트 조회 API"를 호출한다.
② 호출된 API는 입력된 Foundation Model과 프롬프트를 바탕으로 Bedrock Endpoint를 호출하고, 응답 결과를 API에 전달한다. 위의 예시에서 Foundation Model은 Claude사의 Claude 3.5 Sonnet을 사용하였다.
③ Bedrock을 통해 응답받은 데이터는 관리자 시스템의 정해진 항목에 맞춰 표시가 되어지고, 사용자 검수를 통해 컨텐츠 데이터를 "학습 문제 컨텐츠 저장" API에 요청한다.
④ 학습 컨텐츠 데이터는 EC2에 구축된 Database에 저장된다. Database는 비용을 고려하여 T3.Medium으로 구축하였다.
⑤ 저장된 학습 문제 컨텐츠를 사용자게 메일로 발송하기 위하여 메일을 보낼 사용자를 입력 후 "메일 전송"API를 요청한다.
⑥ 사용자 메일 주소를 조회하여 SES로 학습 진행을 위한 메일을 발송한다.
⑦ 메일을 받은 사용자는 학습을 진행하게 되며, 학습 풀이 결과 데이터는 "문제 풀이 저장" API로 요청하여 저장한다.
AWS S3는 오프젝트 타입으로 파일을 관리할 수 있는 Object Storage로 단순한 파일 관리 뿐만 아니라, 정적 웹사이트 등의 호스팅 기능을 제공하고 있다.
비용적인 측면에서도 저장 비용과 파일 조회 비용만 발생하기 때문에 복잡하지 않은 단순 웹 사이트나 데모 형태의 웹 어플리케이션 구성 시, 효율적인 비용으로 자신만의 웹 페이지 구성이 가능하다.

정적 웹 사이트 호스팅을 위해 버킷 정책 설정 및 S3에서 "정적 웹 사이트 호스팅"을 활성화를 진행하였으며,
API G/W와 API 통신을 위해 S3의 CORS 정책을 설정하여 API G/W에 대한 접근 허용을 설정하였다.

Rest API 구성은 Amazon API Gateway(API G/W)를 사용하여 구성하였으며,
비즈니스 로직을 수행하기 위해 각 API별로 Lambda 함수를 Integration하여 API G/W로 입력된 파라미터를 바탕으로 비즈니스 로직을 수행한다.
Amazon API Gateway는 Lambda 뿐만 아니라 SQS, Kinesis Data Stream, ECS 등의 다양한 AWS Managed 서비스와의 통합이 가능하며,
요청된 파라미터에 대한 추가 파라미터 설정 또는 파라미터 튜닝이 가능하다.
비용 측면에서도 최초 12개월 동안 월 요청 100만건 까지는 비용이 발생하지 않는다.
(심지어 Mockup 처리도 가능하다.)

비즈니스 로직을 수행하는 AWS Lambda는 Serverless로 운영하는 어플리케이션을 구축할 수 있으며, 요청이 들어올 경우에만 실행되어 종료되는 stateless 형태의 Managed 서비스이다.
그렇기 때문에 Lambda 또한 API G/W처럼 요청 건수 단위로 비용이 책정되며, 최초 12개월 동안 월 100만건까지는 비용이 발생하지 않는다.

Database는 MariaDB를 사용하였으며, EC2 또는 Amazon Managed Service인 RDS 중 Toy Project임을 고려하여 EC2에 Database를 구축하였다.
EC2는 AWS Cloud를 사용한다면 가장 먼저 접하고 사용하는 가상 머신 서버로,
다양한 리소스 Spec을 가진 논리 서버를 선택하여 구성할 수 있으며, 장애 복구 / 회복 탄력성 / 서비스 확장 등의 서비스 안정화를 위한 다양한 요소를 추가로 구축할 수 있다.
EC2가 아닌 AWS Managed Service 를 고려한다면, Amazon RDS를 추천드린다. Amazon RDS는 Oracle, Mysql, PostgresQL 등의 메이저 RDBMS를 지원하며,
DB 클러스터 구성을 고려한다면 Amazon Aurora를 이용하여 클러스터 구성이 가능하다.
최근 생성형 AI 등을 통한 데이터베이스 구성 시, PostgresQL를 사용하는 사례가 많은데,
AWS에서 제공하는 RDS에도 최신 기술들이 빠르게 업데이트 되어 사용자들이 편하게 사용할 수 있게 제공해준다.
LLM 문제은행에 사용된 모델 엔진은 Claude 사의 Claude 3 sonnet을 사용하였으나,
테크데이 직전에 Claude 3.5 sonnet이 AWS에 출시 되면서 최신 모델을 적용하여 사용하였다.
확실히 이전 모델엔진 보다 정확도가 향상된 것을 확인하였다.
AWS에서는 Foundation Model 형태로 다양한 모델엔진을 선택하여 사용할 수 있도록 Amazon Bedrock 서비스를 제공한다.
생성형 AI 서비스인 Amazon Bedrock은 Claude, LLAMA, Stable Diffusion 등의 다양한 Foundation Model을 제공하고, 사용자가 원하는 Model을 선택하여 사용할 수 있다.
뿐만 아니라 사용자가 가지고 있는 데이터를 RAG로 구축하고, Foundation Model이 해당 데이터를 바탕으로 응답 할 수 있도록 Integration이 잘 구축되어 있어,
사용자가 쉽게 생성형 AI를 구축하여 사용 할 수 있다.
(물론 데이터의 정합성 / 무결성 / 환각 등에 대한 극복 방법이 필요하며, 이 부분은 Data를 전문적으로 다루는 데이터 사이언티스트 또는 데이터 분석가와 협업이 필요하다.)

데모 시연을 위해 사용자에게 Notification 을 전달할 수 있는 방법을 고민하다가,
gmail 앱을 활용하여 notificationd을 구성하면 어떨가 싶어, AWS SES를 이용하여 사용자에게 학습 제공하도록 기능을 구현하였다.
SES는 Simple Email Service라는 말 그대로 메일을 주고 받을 수 있는 AWS의 Mail 서비스이다.
MVP 등의 서비스 테스트 용도로 제공하기 위해 SES 구축 시, Sendbox 형태로 일 200건까지 무료로 사용이 가능하여 해당 서비스를 구축하였으며,
향후 Production 전환을 고려서 SES를 사용할 경우 Production 레벨로 업그레이드를 요청하면 무제한으로 사용 가능하다.
(물론 비용이 발생하기 때문에 효율적인 방안은 찾아야 할 듯 싶다.)

12주 동안 진행된 데보션 토이프로젝트 세션과 데보션 테크데이에 전시하면서 다양한 사람들을 만날 수 있었다.
취업을 준비하는 취준생분들과 적극적으로 활동하시는 데보션영분들, 그리고 다양한 도메인에서 현업으로 활동하시는 개발자 및 엔지니어 분들까지...
알게된 경로는 달라도 이분들이 이곳에 와서 다양한 인사이트를 경험하고 경청하는 모습을 보면서 기술 교류의 소중함을 다시한번 느낄 수 있게 되었다.
뿐만 아니라 개인적으로 올해 다양한 커뮤니티에서 적극적으로 활동하고 기록하려고 하는게 목표였는데, 목표하는 방향대로 진행되고 있어 좋았다.
마지막으로 12주동안 프로젝트 진행을 열정적으로 할 수 있게 당근과 채찍(?)을 휘둘려주신 토이프로젝트 세션 참여자 분들께 "감사합니다"라는 코멘트를 남길 수 있어 행복했다.
언젠가일지는 모르겠지만, 참여했던 맴버 한분한분 현장에서 다시 만날 수 있는 날이 있길 기대하며...
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.