AWS SUMMIT 2024 후기 - Day2

죠랭이·2024년 6월 23일
0

컨퍼런스

목록 보기
3/3
post-thumbnail

AWS SUMMIT 2024 대망의 2일차가 밝았다. 2일차에는 AWS Solution Architects분들이 AWS 제품을 설명하는 세션이 핵심이었다. 그렇다면, 2일차는 어떤 세션을 듣고 인사이트를 얻었을지 한편 살펴보도록 하자.
p.s. 진짜 컨퍼런스 분위기가 re:Invent 행사처럼 힙한 느낌이 물씬 풍겼다.

AWS로 개척하는 차세대 개발자 경험 탐구

이번 SUMMIT 키워드가 생성형AI로 AmazonQ와 같은 재미있는 AI툴을 한번 써보기도 하였다. 이외에도 어떤 경험을 할 수 있을지 궁금하였는데 해당 세션에서 정말 유용한 정보들을 많이 건질 수 있었다.
AWS에서는 생성형AI로 계획, 작성, 운영, 개선 총 4가지의 영역에서 소프트웨어 혁신을 경험할 수 있다. 계획과 작성 영역은 AmazonQ, 운영과 개선 영역은 Amazon CodeCatalyst를 활용하여 생산성 향상을 경험할 수 있다.

  • AmazonQ의 특징
    • 대화형 어시스턴트로 어떤 AWS 솔루션이 적절한지 가이드를 해준다. 개인적으론 어플리케이션 인프라 구축 시 많은 도움이 될 것으로 예상한다.(사이드 프로젝트 출시에 한번 활용해봐야겠다...!)
    • 가장 놀라운 점이 자연어를 CLI 명령어로 변환하는 기능이다. 매번 CLI 명령어 구글링하면서 찾았는데 이젠 AmazonQ한테 물어보면 바로 알려줘서 엄청 유용할 것으로 보인다. 한 가지 궁금한 점은 IntelliJ IDE에도 AmazonQ 플러그인이 있는데 이걸 설치하면 IDE에서 활용할 수 있는지 여부다. 아니면 진짜 AWS Console에 들어가서 대화해야 하는데 그러기엔 회사 보안 PC로만 접근 가능하여 완전 불편하다...젭알 지원하길...!
    • 문제 해결 기능을 제공한다. 자세하게 말하면 AWS에서 장애가 발생하여 오류 감지할 경우 콘솔에서 짧은 시간 내에 오류 진단 및 문제 해결에 대한 솔루션을 제공한다. 개인적으론 서비스 운영 시 Troubleshooting하기 용이할 것으로 보인다. 자주 발생하는 에러 케이스를 이미 학습한 상황일테니 흔하게 발생하는 에러에 대해선 빠른 해결책을 제시해줄 것으로 기대한다. 대신, 해결책에 대한 퀄리티가 어느정도일지는 솔직히 궁금하다.
    • 어플리케이션 업그레이드도 지원한다. 즉, EC2에 올려 사용중인 서비스의 프레임워크 버전 업그레이드도 지원한다는 소리. 어플리케이션 버전 업그레이드 하면서 발생하는 에러도 핸들링이 가능하다는데 왠지 컴파일 에러만 잡고 런타임 에러는 어렵지 않을까 싶다. 이건 한번 기회되면 써봐서 증명해보고 싶달까...?!
    • Windows에서 Linux로의 마이그레이션 가속화도 곧 출시될 예정이라고 한다. 엔지니어들이 열심히 만드는 중인가보다ㅎㅎ
  • Amazon CodeCatalyst 특징
    • 해당 솔루션을 소개할 때 타이틀이 Reinventing DevOps인 것으로 보아 개발부터 운영까지 관리할 수 있는 매니지드 서비스인 것으로 보인다. 소개에 의하면 어플리케이션 빌드/배포/운영 라이프 사이클을 통합 관리 가능하다. 추후 데모 영상보면서 어떤 솔루션인지 자세히 알아보고 싶다.
      AWS CodeCatalyst 소개 일부
    • Code Catalyst를 소개하면서 AWS Amplify라는 새로운 기능도 소개하였는데 몇 시간 안에 풀스택 어플리케이션 혹은 모바일 어플리케이션 구축이 가능하게끔 지원한다고 한다. 엄청난 혁신이라고 생각한다. 또한, 서버리스로 수백만 규모로 확장이 가능하다는데 이건 정말 사이드 프로젝트 출시해서 한번 경험해보고 싶다.
      AWS Amplify(Gen2) 소개 일부

AWS에서 분산 디자인 패턴 구현하기

다음으로는 AWS에서 소개하는 적절한 분산 디자인 패턴이 무엇일지 궁금하여 아키텍처 세션을 참석하였다. 현재 마이크로서비스 아키텍처 패턴 스터디를 하고 있는데 익숙한 용어들이 많이 나와서 더 흥미롭게 들을 수 있었다.

처음에는 모노리스 구조에서 간단하게 시작한다. 그러다 점점 추가된 기능과 도메인으로 인하여 복잡성이 증가하는데 시간이 지날수록 지속적인 변경이 가능한 적응형 시스템이 필요해진다. 이때 필요한 개념이 바로 분산 디자인 패턴. 해당 디자인 패턴으로 비즈니스 변화 속도에 맞게 유연하게 대응할 수 있는 아키텍처를 구성할 수 있다. 또한, 시간이 지날수록 비즈니스도 고도화하기에 시스템 복잡도도 급격하게 올라간다. 이때, 핵심 시스템의 복잡도를 해결할 수 있는 방법으로는 아래와 같은 것들이 있다.

  • DDD(Domain Driven Development)
  • Bounded Context
  • Saga 오케스트레이션 패턴
  • Step Function

하나하나 자세히 들여다보기엔 분량이 많기에 몇 가지만 살펴보겠다. 먼저, DDD는 최근 엔지니어 사이에서 각광받고 있는 개발방법론이다. 회사에서 팀원들과 함께 DDD 개념에 대한 학습을 한 적이 있었는데 이때 필자가 이해한 바는 다음과 같다. DDD는 비즈니스 도메인 단위로 엔티티 모델링을 하여 개발 및 유지보수하는 방식으로 복잡한 비즈니스 도메인 영역에선 복잡도를 해결하는 데 유용하게 쓰이는 개발방법론이다. 나중에 도메인 주도 개발 시작하기라는 책으로 실습도 해보면서 그 의미를 더 깊이 이해해보고 싶다.

Bounded Context는 DDD에서도 언급되는 개념으로 각각 도메인 컨텍스트별로 분리하여 영향을 최소화할 수 있도록 하는 기법이다. 만약, 서로 다른 도메인 컨텍스트끼리 연결하고자 한다면 이벤트 방식으로 구현하는 것을 추천한다.(대표적으로, 구매재고 도메인 간의 이벤트 기반 연동 예시가 있다.)
여기까지 소개한 방법을 복잡한 비즈니스 도메인에 적용한다면 개발 및 운영 단계에서 시스템 복잡도를 낮추는 효과를 누릴 수 있다.
리테일 & 로열티 도메인 연동 아키텍처
하지만, 장애 복구 시에는 여전히 복구의 복잡도가 상승하는 문제가 남아있다. 이를 해결하기 위해선 Saga 오케스트레이션 패턴과 Step Function을 도입할 필요가 있다.
더 자세한 기술적인 내용은 마이크로서비스 패턴 학습 블로그에서 이야기 하도록 하겠돠...!


위의 세션이 끝나고 다음 세션을 듣기까지 시간적 여유가 있어 3층에 위치한 전시 부스를 방문하여 이것저것 구경하였다. 작년과 달리 회사 기념품 수령을 위한 부스 방문율은 줄인 대신 AWS에서 제공하는 솔루션으로 만든 서비스 체험 부스에서 구경하는 시간을 늘렸다. 생성형 AI가 주제다보니 자율주행, 행동분석, 이미지 추천 검색 등 재미있고 신기한 솔루션들이 많았는데 그중에서 필자는 자신의 얼굴 기반으로 옛날 인물 중 어울리는 이미지를 추천해주는 서비스가 가장 재미있었다. 즉석 사진 촬영 후 약 1분간 AI가 사진 인물에 맞는 캐릭터를 검색하여 합성한다. 사진 촬영 후 결과물이 나오기까지 생각보다 시간이 오래걸리긴 했지만 결과물에 재미있는 설명까지 적혀있어 흥미로웠다. AI 심리 테스트같은 느낌이었달까?ㅎㅎ AWS Bedrock 솔루션을 활용한 서비스라는데 아키텍처 구성을 어떻게 했는지 자세히 보질 못했다😭만약, 이 서비스를 고도화한다고 하면 인물 사진 이미지 분석 및 합성 시간을 단축시키기 위한 성능 개선 고민을 깊게 해볼 필요가 있을 것 같다고 느꼈다.
생성형 AI 체험 부스

필자의 AI 이미지 추천 결과

AWS Bedrock을 활용한 프롬프트 엔지니어링 모범사례

AWS에서 야심차게 준비한 생성형 AI인 Bedrock을 활용한 프롬프트 엔지니어링 모범 사용사례를 소개하는 세션이었다. 체험부스에서 경험해보니 직접 활용하여 AI 관련 서비스를 출시해보고 싶다는 생각을 하였다. 그래서 이 세션에서 쏠쏠한 정보들을 습득하고자 하였는데 많은 인사이트를 얻을 수 있어 좋았다.
프롬프트 엔지니어링은 정해진 맥락 안에서 질문에 대한 답변을 유도하는 AI를 만드는 엔지니어링 기법이다. 단순 기법으로는 정규 표현식같은 특정 format을 설정한 프롬프트 엔지니어링으로 One-Shot Prompting이 존재한다. 즉, 답변에 대한 예시를 분류하여 먼저 AI에게 제공하고 사용자 입력에 대한 답변으로 해당 예시에서 선택하여 가져올 수 있도록 한다.

프롬프트 고급 기법으로는 Chain Of Thoughts, RAG 기법 총 두 가지가 존재한다. 먼저, Chain Of Thoughts는 중간 추론 단계를 거쳐 복잡한 추론이 가능하도록 하는 기법이다. 추론 작업의 결과를 개선하기 위하여 여러 예시 결과를 참조한다. 이는 모델의 투명성을 보장한다.
Chain Of Thoughts 예시
문제를 단계별로 나누어 풀어내도록 하여 LLM의 복잡한 추론 작업을 수행하는 능력이 향상된다.
RAG 기법은 내부 지식 저장소를 활용하여 프롬프트 컨텍스트를 강화하는 기법이다. 특정 도메인에 특화된 Q&A 및 챗봇 사례에 적절하다고 볼 수 있다.(AI 트레이너 부업을 하는 중인데 아마 이 기법을 강화시키는 일환이지않나 싶다.)
RAG 시스템 아키텍처 예시
여기서 제시한 프롬프트 엔지니어링 가이드는 다음과 같다.

  • 실험과 반복만이 답이다. 처음에는 프롬프트 요소를 많이 추가하여 잘 동작하게 만든 다음 효율성을 위하여 세분화하고 요소를 제거하는 것이 가장 best.
    프롬프트 구성요소
  • 프롬프트를 자주 테스트하고 자주 반복하라! 다음의 과정을 자주 반복하면서 학습 강화시키는 것이 좋다.
    1️⃣ 테스트 케이스 작성(특히나, 엣지 케이스는 잊지 마러라!!!!!ㅋㅋㅋ) ➡️ 2️⃣ 프롬프트 초안 작성 ➡️ 3️⃣ 테스트 케이스로 프롬프트 검증 ➡️ 4️⃣ 프롬프트 수정 ➡️ 5️⃣ 프롬프트 공유

다음으로는 LLM중 하나인 클로드(Claude) 프롬프트에 대하여 소개하였다. 클로드 프롬프트는 Anthropic이라는 AI 연구 회사에서 개발한 LLM으로 OpenAI의 GPT 모델과 유사한 방식으로 동작한다. 클로드 프롬프트를 보다 더 잘 활용하기 위해선 아래 내용을 참고하자.

  1. 명확하고 직접적인 지시를 내려라. 그래야 답변이 가장 좋아진다. 확실하지 않은 경우 프롬프트 황금률을 따르라. 이는 곧, 사람이 이해할 수 있는지를 체크하라는 말이다.
  • e.g) 로봇에 대한 짧은 시를 써줘. 서문은 건너뛰고 바로 본문으로 넘어가줘.
  1. 예제를 제공하라. 일반적인 엣지 케이스의 예를 클로드에게 알려줘라. 예시가 많을수록 지연 시간과 토큰을 더 소모하되 더 안정적으로 답변을 한다.
    생각할 시간을 주자...ㅋ
    여기서 신기했던 점은 클로드에게도 생각할 시간을 줘야한다는 것이다. 발표자분이 아예 질문 자체에 생각해보라는 내용을 넣고 물어보시는데 AI에게도 인간과 동일하게 생각할 시간이 필요하구나...ㅎㅎㅎ
  2. 역할을 지정하라. 어떤 역할을 맡아야 하는지에 대한 컨텍스트가 필요하다. 이렇게 역할을 지정하면 특정 상황에서의 정확도 향상뿐만 아니라 역할에 맞는 어조나 태도로 변경한다.
  3. XML 태그를 사용하여 섹션을 구분하라. 일반 자연어 질문보다 XML 태그를 포함한 질문이 Claude가 이해하는 데 더 도움이 된다. 진짜 0살 갓난아기에게 질문하는 것처럼 어디부터 어디까지가 메일이고 내용인지 등등의 표시까지 정확하게 하여 전달하는 것이 좋다. 프롬프트 엔지니어링을 배울수록 뭔가 인간을 더 잘 이해할 수 있을 것 같다.
    XML태그 답변에 적극 활용!
  4. 출력 형식을 지정하고 클로드를 대신해서 말해라. 원하는 정확한 출력 형식을 지정하며 ()로 정확한 출력 형식을 알려주도록 하자.
    출력 형식 지정해주기
  • 이때, 환각현상(hallucination), 프롬프트 인젝션 및 적대적 프롬프팅으로 클로드 LLM을 활용하는 데 어려움이 있다면 다음과 같이 대처하자.
    먼저, 환각현상의 경우 모른다는 답변을 할 수 있도록 허용한다.확신이 있는 경우에서만 답변하도록 한다. 관련 인용문을 찾은 다음 인용문을 사용하여 답변해달라고 요청한다. 이런 식으로 위에서부터 순차적으로 하나씩 적용하면 환각현상을 줄일 수 있다.
    프롬프트 인젝션 및 적대적 프롬프팅의 경우 유해성 판별 쿼리를 실행하여 위의 두 케이스에 대한 저항력을 키운다. 유해성 프롬프팅을 감지하면 바로 차단하여 추가 이슈 발생을 막는다.

마지막으로는 고급 프롬프팅 기법에 대하여 설명하였다.
1. 한번에 여러 가지 작업을 하도록 요청하는 것이 아닌 작업을 세분화하여 응답을 요청하도록 하자.
2. 긴 프롬프트의 경우는 아래 이미지 참고.
긴 프롬프트의 경우 처리하는 꿀팁
프롬프트 리소스 포탈

해당 세션에서는 정말 프롬프트 엔지니어링 시 유용한 꿀팁들을 많이 공유받아 엄청 유용하다고 느꼈다.

AWS에서 분석과 생성형 AI를 위한 모범 사례

이 세션은 생성형 AI 데이터를 분석하는 엔지니어링의 모범 사례를 소개하였다. 요즈음 매니지드 서비스를 잘 제공하고 있어 굳이 데이터 파이프라인을 구축할 필요는 없다고 한다. 더 나아가, 서버리스 방식으로 궁극적으로 제공한다고 하는데... 데이터 엔지니어링 기술 고도화도 점차 이루어지고 있음이 와닿았다. 데이터 엔지니어링에서 주로 활용하는 AWS 제품군을 소개하며 Best Practice를 공유하였는데 데이터 엔지니어링에 대한 이해도가 낮다보니 이해가 잘 안가는 세션이었다. 그래서 내용을 캡쳐하였는데 궁금한 사람들은 읽어보길 추천한다.
캡쳐1
캡쳐2
캡쳐3
캡쳐4
캡쳐5

profile
슈퍼 개발자를 목표로 하는 주니어

0개의 댓글