AWS SUMMIT 2024 대망의 2일차가 밝았다. 2일차에는 AWS Solution Architects분들이 AWS 제품을 설명하는 세션이 핵심이었다. 그렇다면, 2일차는 어떤 세션을 듣고 인사이트를 얻었을지 한편 살펴보도록 하자.
p.s. 진짜 컨퍼런스 분위기가 re:Invent 행사처럼 힙한 느낌이 물씬 풍겼다.
이번 SUMMIT 키워드가 생성형AI
로 AmazonQ와 같은 재미있는 AI툴을 한번 써보기도 하였다. 이외에도 어떤 경험을 할 수 있을지 궁금하였는데 해당 세션에서 정말 유용한 정보들을 많이 건질 수 있었다.
AWS에서는 생성형AI로 계획, 작성, 운영, 개선 총 4가지의 영역에서 소프트웨어 혁신을 경험할 수 있다. 계획과 작성 영역은 AmazonQ, 운영과 개선 영역은 Amazon CodeCatalyst를 활용하여 생산성 향상을 경험할 수 있다.
자연어를 CLI 명령어로 변환하는 기능
이다. 매번 CLI 명령어 구글링하면서 찾았는데 이젠 AmazonQ한테 물어보면 바로 알려줘서 엄청 유용할 것으로 보인다. 한 가지 궁금한 점은 IntelliJ IDE에도 AmazonQ 플러그인이 있는데 이걸 설치하면 IDE에서 활용할 수 있는지 여부다. 아니면 진짜 AWS Console에 들어가서 대화해야 하는데 그러기엔 회사 보안 PC로만 접근 가능하여 완전 불편하다...젭알 지원하길...!다음으로는 AWS에서 소개하는 적절한 분산 디자인 패턴이 무엇일지 궁금하여 아키텍처 세션을 참석하였다. 현재 마이크로서비스 아키텍처 패턴 스터디를 하고 있는데 익숙한 용어들이 많이 나와서 더 흥미롭게 들을 수 있었다.
처음에는 모노리스 구조에서 간단하게 시작한다. 그러다 점점 추가된 기능과 도메인으로 인하여 복잡성이 증가하는데 시간이 지날수록 지속적인 변경이 가능한 적응형 시스템이 필요해진다. 이때 필요한 개념이 바로 분산 디자인 패턴. 해당 디자인 패턴으로 비즈니스 변화 속도에 맞게 유연하게 대응할 수 있는 아키텍처를 구성할 수 있다. 또한, 시간이 지날수록 비즈니스도 고도화하기에 시스템 복잡도도 급격하게 올라간다. 이때, 핵심 시스템의 복잡도를 해결할 수 있는 방법으로는 아래와 같은 것들이 있다.
하나하나 자세히 들여다보기엔 분량이 많기에 몇 가지만 살펴보겠다. 먼저, DDD는 최근 엔지니어 사이에서 각광받고 있는 개발방법론이다. 회사에서 팀원들과 함께 DDD 개념에 대한 학습을 한 적이 있었는데 이때 필자가 이해한 바는 다음과 같다. DDD는 비즈니스 도메인 단위로 엔티티 모델링을 하여 개발 및 유지보수하는 방식으로 복잡한 비즈니스 도메인 영역에선 복잡도를 해결하는 데 유용하게 쓰이는 개발방법론이다. 나중에 도메인 주도 개발 시작하기
라는 책으로 실습도 해보면서 그 의미를 더 깊이 이해해보고 싶다.
Bounded Context는 DDD에서도 언급되는 개념으로 각각 도메인 컨텍스트별로 분리하여 영향을 최소화할 수 있도록 하는 기법이다. 만약, 서로 다른 도메인 컨텍스트끼리 연결하고자 한다면 이벤트 방식으로 구현하는 것을 추천한다.(대표적으로, 구매
와 재고
도메인 간의 이벤트 기반 연동 예시가 있다.)
여기까지 소개한 방법을 복잡한 비즈니스 도메인에 적용한다면 개발 및 운영 단계에서 시스템 복잡도를 낮추는 효과를 누릴 수 있다.
하지만, 장애 복구 시에는 여전히 복구의 복잡도가 상승하는 문제가 남아있다. 이를 해결하기 위해선 Saga 오케스트레이션 패턴과 Step Function을 도입할 필요가 있다.
더 자세한 기술적인 내용은 마이크로서비스 패턴 학습 블로그에서 이야기 하도록 하겠돠...!
위의 세션이 끝나고 다음 세션을 듣기까지 시간적 여유가 있어 3층에 위치한 전시 부스를 방문하여 이것저것 구경하였다. 작년과 달리 회사 기념품 수령을 위한 부스 방문율은 줄인 대신 AWS에서 제공하는 솔루션으로 만든 서비스 체험 부스에서 구경하는 시간을 늘렸다. 생성형 AI가 주제다보니 자율주행, 행동분석, 이미지 추천 검색 등 재미있고 신기한 솔루션들이 많았는데 그중에서 필자는 자신의 얼굴 기반으로 옛날 인물 중 어울리는 이미지를 추천해주는 서비스가 가장 재미있었다. 즉석 사진 촬영 후 약 1분간 AI가 사진 인물에 맞는 캐릭터를 검색하여 합성한다. 사진 촬영 후 결과물이 나오기까지 생각보다 시간이 오래걸리긴 했지만 결과물에 재미있는 설명까지 적혀있어 흥미로웠다. AI 심리 테스트같은 느낌이었달까?ㅎㅎ AWS Bedrock 솔루션을 활용한 서비스라는데 아키텍처 구성을 어떻게 했는지 자세히 보질 못했다😭만약, 이 서비스를 고도화한다고 하면 인물 사진 이미지 분석 및 합성 시간을 단축시키기 위한 성능 개선 고민을 깊게 해볼 필요가 있을 것 같다고 느꼈다.
AWS에서 야심차게 준비한 생성형 AI인 Bedrock을 활용한 프롬프트 엔지니어링 모범 사용사례를 소개하는 세션이었다. 체험부스에서 경험해보니 직접 활용하여 AI 관련 서비스를 출시해보고 싶다는 생각을 하였다. 그래서 이 세션에서 쏠쏠한 정보들을 습득하고자 하였는데 많은 인사이트를 얻을 수 있어 좋았다.
프롬프트 엔지니어링은 정해진 맥락 안에서 질문에 대한 답변을 유도하는 AI를 만드는 엔지니어링 기법이다. 단순 기법으로는 정규 표현식같은 특정 format을 설정한 프롬프트 엔지니어링으로 One-Shot Prompting이 존재한다. 즉, 답변에 대한 예시를 분류하여 먼저 AI에게 제공하고 사용자 입력에 대한 답변으로 해당 예시에서 선택하여 가져올 수 있도록 한다.
프롬프트 고급 기법으로는 Chain Of Thoughts, RAG 기법 총 두 가지가 존재한다. 먼저, Chain Of Thoughts
는 중간 추론 단계를 거쳐 복잡한 추론이 가능하도록 하는 기법이다. 추론 작업의 결과를 개선하기 위하여 여러 예시 결과를 참조한다. 이는 모델의 투명성을 보장한다.
문제를 단계별로 나누어 풀어내도록 하여 LLM의 복잡한 추론 작업을 수행하는 능력이 향상된다.
RAG 기법은 내부 지식 저장소를 활용하여 프롬프트 컨텍스트를 강화하는 기법이다. 특정 도메인에 특화된 Q&A 및 챗봇 사례에 적절하다고 볼 수 있다.(AI 트레이너 부업을 하는 중인데 아마 이 기법을 강화시키는 일환이지않나 싶다.)
여기서 제시한 프롬프트 엔지니어링 가이드는 다음과 같다.
프롬프트를 자주 테스트하고 자주 반복하라!
다음의 과정을 자주 반복하면서 학습 강화시키는 것이 좋다.다음으로는 LLM중 하나인 클로드(Claude) 프롬프트에 대하여 소개하였다. 클로드 프롬프트는 Anthropic이라는 AI 연구 회사에서 개발한 LLM으로 OpenAI의 GPT 모델과 유사한 방식으로 동작한다. 클로드 프롬프트를 보다 더 잘 활용하기 위해선 아래 내용을 참고하자.
모른다는 답변을 할 수 있도록 허용한다.
확신이 있는 경우에서만 답변하도록 한다. 관련 인용문을 찾은 다음 인용문을 사용하여 답변해달라고 요청한다. 이런 식으로 위에서부터 순차적으로 하나씩 적용하면 환각현상을 줄일 수 있다.마지막으로는 고급 프롬프팅 기법에 대하여 설명하였다.
1. 한번에 여러 가지 작업을 하도록 요청하는 것이 아닌 작업을 세분화하여 응답을 요청하도록 하자.
2. 긴 프롬프트의 경우는 아래 이미지 참고.
해당 세션에서는 정말 프롬프트 엔지니어링 시 유용한 꿀팁들을 많이 공유받아 엄청 유용하다고 느꼈다.
이 세션은 생성형 AI 데이터를 분석하는 엔지니어링의 모범 사례를 소개하였다. 요즈음 매니지드 서비스를 잘 제공하고 있어 굳이 데이터 파이프라인을 구축할 필요는 없다고 한다. 더 나아가, 서버리스 방식으로 궁극적으로 제공한다고 하는데... 데이터 엔지니어링 기술 고도화도 점차 이루어지고 있음이 와닿았다. 데이터 엔지니어링에서 주로 활용하는 AWS 제품군을 소개하며 Best Practice를 공유하였는데 데이터 엔지니어링에 대한 이해도가 낮다보니 이해가 잘 안가는 세션이었다. 그래서 내용을 캡쳐하였는데 궁금한 사람들은 읽어보길 추천한다.