2023 AWS re:invent 행사에 베이글코드 개발자분들이 다녀왔습니다 😁
미국 라스베가스에서 11월 27일부터 12월 1일까지 진행된 AWS re:invent!! 그곳에서 소개되었던 신기술과 신규 기능들 중 흥미로운 것들을 정리해보았습니다!
EKS의 Prometheus 지표를 에이전트 없이 수집
EKS로 운영하는 k8s 클러스터의 Prometheus 지표를 prometheus agent 설치 없이 EKS 콘솔과 API 호출을 통해서 Prometheus 지표 정보를 수집할 수 있게 되었습니다!
위와 같이 EKS 클러스터를 생성할 때, Promethues 지표를 내보내게 할 수 있습니다!
단, 단점은 이 Prometheus 지표를 Amazon Prometheus로만 export 할 수 있는 것 같습니다.
또 기존에 이미 생성된 EKS 클러스터에서는 요 기능을 활성화 하는 방법을 못 찾았습니다 😢
EKS Pod Identity
EKS Pod에 IAM Role을 할당하는 새로운 방식이 추가되었습니다!
베이글코드 데이터팀은 IRSA(IAM Roles for Service Account) 방식으로 IAM Role을 부여하고 있었는데요. IRSA로 충분할 것 같은데, 왜 요 기능이 출시된 걸까요?
IRSA 방식을 세팅하려면 EKS OIDC를 세팅하고, 사용하려는 IAM Role에 OIDC Provider 정보를 Trusted Relationship에 매번 넣어줘야 했습니다.
IRSA 방식의 플로우 차트인데, EKS, IAM, STS 등 여러 컴포넌트가 상호작용합니다… 꽤 복잡하죠…
이번에 출시된 EKS Pod Identity는 EKS 전용으로 디자인된 기능을 제공합니다!! Pod Identity의 장점은 크게 4가지 인데요.
- EKS OIDC provider 셋업 없이 pod에 IAM role 부여 가능
- AWS STS 거치지 않고, EKS 전용 Pod Identity API 통해서 AssumeRole 수행
- EKS에서 사용하려는 IAM Role의 Trust Relationship 수정 필요 없음
- ServiceAccount에 붙이던
도 필요 없음.annotations
단, 요 Pod Identity 기능을 사용하려면 “Amazon EKS Pod Identity Agent”라는 EKS addon을 설치해야 합니다.
기존 AWS IAM에 Trust Relationship을 적는 것과, K8s ServiceAccount의
annotations
에 적던 방식은 Pod Identity Association을 맺는 방식으로 변경 되었습니다!
EMR on EKS
기존 EMR은 ec2 인스턴스의 묶음을 분산 노드로 사용합니다. 그런데, EKS 위에서 EMR들 돌리게 되면, EKS의 provisioned 노드를 사용할 수도 있고, EKS Fargate를 조합해서 좀더 탄력적으로 운영할 수도 있습니다.
게다가 EKS 위에서 EMR 어플리케이션 외에 다른 K8s app을 함께 운영할 수도 있습니다!
기존 EMR이 ec2를 기반으로 한다는 점 때문에 “spark-on-kubernetes”를 도입했다면, EMR on EKS가 도움이 될 것 같습니다!
Gaviton4 기반 EC2 r8g 인스턴스 출시
Gaviton 프로세스 제품군 중 가장 최신 세대인 8세대가 출시되었습니다!
Graviton3를 기반으로 하는 7세대(r7g)에 비해 8세대는 최대 3배의 vCPU, 3배의 메모리 용량. 최대 30% 향상된 컴퓨팅 성능을 제공한다고 합니다!
S3 Express One Zone 스토리지 클래스
데이터를 특정 region의 한 AZ에 저장하도록 합니다. S3 Standard에 비해 액세스 속도가 10배 향상, 요청 비용이 50% 감소 한다고 합니다.
단점은 One AZ이기 때문에 해당 AZ의 데이터센터 화재/수해 등의 사고 발생 시 데이터 유실됩니다 🥲
또, 10x 속도를 보장하기 위해선 해당 One Zone S3에 접근하는 compute 역시 같은 AZ 위에 띄워야 합니다.
PyTorch 용 S3 커넥터
Pytorch가 S3에 있는 훈련 데이터와, S3에 있는 체크포인트 RW를 좀더 빠르게 가능하게 합니다. 해당 S3 connector 내부적으로 Read/List 작업을 최적화 한다고 합니다.
아래는 예시코드 입니다.
from s3torchconnector import S3Checkpoint
import torchvision
import torch
CHECKPOINT_URI="s3://<BUCKET>/<KEY>/"
checkpoint = S3Checkpoint(region="us-east-1")
model = torchvision.models.resnet18()
# Save checkpoint to S3
with checkpoint.writer(CHECKPOINT_URI + "epoch0.ckpt") as writer:
torch.save(model.state_dict(), writer)
# Load checkpoint from S3
with checkpoint.reader(CHECKPOINT_URI + "epoch0.ckpt") as reader:
state_dict = torch.load(reader)
model.load_state_dict(state_dict)
S3 Batch Operation
S3 버킷에 전체 Object, Prefix/Suffix 조건으로 작업을 수행하는 Job을 추가할 수 있게 되었습니다!
쉽게 말해서 AWS S3 CLI 오퍼레이션을 Configuration과 진행 정도를 S3 콘솔에서 확인할 수 있는 기능이라고 볼 수 있습니다.
사용 예시는, 조건에 맞는 Object들을
- 다른 Bucket으로 복제
- AWS Lambda function으로 보내기
- Object Tag 변경하기
등을 할 수 있습니다.
이번 re:invent에서는 각종 zero-ETL integration 방식도 추가로 공개 되었습니다.
zero-ETL integration
:텍스트, 이미지 등 비정형 데이터의 의미와 컨텍스트를 있는 그대로가 아닌 임베딩(embedding)된 숫자 표현으로 변환해 저장하고, 검색 역시 검색어를 임베딩된 숫자 표현으로 변환해 두 임베딩 사이의 유사도로 검색을 수행하는 방법.
Opensearch zero-ETL integration with AWS S3
OCU(OpenSearch Computing Unit) 이용한 S3 서버리스 Ingestion을 지원합니다.
베이글코드 데이터팀은 현재 LogStash를 사용해 Kafka Topic에서 OpenSearch로 데이터를 연동하는데, 이 기능을 사용하면 Kafka Topic의 데이터를 S3 넣어두고 바로 연동 할 수 있을 것 같습니다!
DynamoDB zero-ETL integration with Redshift
Redshift에 DynamoDB 데이터를 zero-ETL로 연동하고, 이에 대해 고성능 분석을 실행 가능하다고 합니다.
단, 이 과정에서 DynamoDB의 프로덕션 워크로드에는 영향을 주지 않는다고 합니다.
Serverless ElasticCache 지원
드디어 ElasticCache에도 Serverless 컴퓨팅을 지원합니다!
Redshift의 External Table에 Apache Iceberg 지원
Redshift External Table
:Redshift 데이터베이스 내에 저장되는 테이블이 아니라 데이터가 외부(S3, Glue)에 저장된 데이터 또는 테이블을 말함.
External Table은
.csv
,
.parquet
format을 지원합니다. 그외에도 Apache Hudi, Delta Lake 포맷도 이미 지원하고 있습니다. 그런데 이번에 Apache Iceberg 포맷도 지원한다고 합니다!! 👍
베이글코드 데이터팀은 Databricks를 데이터 레이크로 채택해 사용하고 있습니다. 자연스럽게 Delta Lake 포맷으로 데이터를 저장하고 있죠. Apache Iceberg도 Delta Lake처럼 Apache Hive가 가지는 한계를 해결하기 위해 제안된 데이터 저장 방식입니다.
그래서 Apache Hudi, Delta Lake, Apache Iceberg 모두 아래와 같은 장점을 가집니다.
- ACID Transaction 지원
- 읽기/쓰기 동시성 제공: 데이터 변경 되는 중에 읽기 가능
- 테이블의 메타데이터 확장 가능
- Snapshot 방식을 지원해 Time Travel과 Rollback이 가능
이번 re:invent에선 각종 데이터베이스에 대한 Vector Search 기능도 공개 되었습니다.
Vector Search
:텍스트, 이미지 등 비정형 데이터의 의미와 컨텍스트를 있는 그대로가 아닌 임베딩(embedding)된 숫자 표현으로 변환해 저장하고, 검색 역시 검색어를 임베딩된 숫자 표현으로 변환해 두 임베딩 사이의 유사도로 검색을 수행하는 방법.
Amazon Titan
Titan은 AWS에서 개발한 LLM 파운데이션 모델(FM)입니다.
모든 Titan FM은 데이터에서 유해 콘텐츠를 감지하고, 사용자의 부적절한 입력을 거부하고 모델 출력을 필터링 한다고 합니다.
- Titan Text Express ✨
- Titan Text Lite ✨
- Titan Text Embeddings
- Titan Multimodal Embeddings ✨
- Titan Image Generator ✨
기존에는 “Text Embeddings” 기능 뿐이었지만, 이번에 무려 4개의 Titan 기능들이 추가되었습니다!!!
Text Lite는 요약과 카피라이팅 전용 모델, Multimodal Embedding은 Text와 Image를 함께 입력 받아 임베딩으로 출력 합니다. Image Generator의 출력에는 기본적으로 워터마크를 포함해 출력한다고 합니다.
Amazon Bedrock
Bedrock은 각종 AI 회사의 고성능 FM 모델과 생성형 AI 앱을 구축하는데 필요한 기능들을 제공하는 서비스입니다.
Bedrock에서 지원하는 주요 FM 모델들
- Amazon Titan 시리즈
- Meta Llama 2 ✨
- Anthropic Claude 2.1 ✨
- Stable Diffusion
기존에도 여러 FM 모델들을 지원하고 있었으나, 이번 2023 re:invent에서 지원하는 Meta Llama2, Anthropic Claude 2.1 모델 등을 지원한다는 게 공개되었습니다.
Amazon Trascribe
AWS에서 제공하는 Audio to Text 서비스입니다.
100+개 언어를 자동으로 인식. 문화권과 악센트별 음성 데이터를 학습 했다고 합니다.
AWS Personalize: Next Best Action
Personalize에 사용자가 취할 가능성이 높은 다음 작업을 실시간으로 추천하는 레시피가 추가되었습니다.
현재 Personalize에서 제공하는 레시피로는
- User Personalization
- Popular Items
- Personalize Ranking
- Related Items
- Personalize Actions(Next Best Action) ✨
- User Segmentation
등으로 이번에 Personalize Actions에 대한 레시피가 추가 된 것입니다.
AWS console-to-code
AWS 웹 콘솔에서 수행한 작업을 프로그래밍 언어로 변환하는 기능입니다.
현재는
us-east-1
리전에서 EC2에 대한 웹콘솔 작업만 console-to-code 변환이 가능하다고 합니다. 뭔가 IaC의 반대 버전 같아 신기하네요 ㅎㅎ
AWS Kuiper
AWS의 인공위성 프로젝트 입니다.
기지국과 광케이블이 깔리지 않은 도서 지역, 수도/전기가 도달하지 못 하는 지역까지 인터넷을 가능하게 하려는 AWS의 프로젝트로, 최종 목표는 극지방을 제외하고 사람이 사는 거의 모든 지역에 인터넷이 가능하도록 만드는 것이라고 하네요!
Amazon Q
AWS 웹 콘솔에서 쓸 수 있는 대화형 어시스턴트입니다.
아직 한글 대화는 지원 하지 않지만, AWS와 관련 질문은 잘 답변 하고 있습니다!
Amazon Q는 AWS 모바일 Console에서도 사용 가능합니다! 📱
Code Catalyst
AWS에서 제공하는 Git SVM 서비스입니다. Github, GitLab과 유사한 서비스를 AWS에서 제공하겠다는 것으로 보입니다.
PR, Issue, CI/CD 같은 기능들이 모두 들어 있고, AWS Code 시리즈(CodeCommit, CodeBuild, CodeDeploy, CodePipeline)과 좀더 궁합이 좋다고 합니다.
AmazonQ와 통합해 개발 요구조건을 명시하면, 그걸 기반으로 거의 완성본인 형태의 PR을 만들어 주는 기능도 있다고 하네요!
2023 AWS re:invent의 규모는 정말 놀라웠습니다! 세상에 개발자가 이렇게 많나 싶을 정도로 많은 사람이 re:invent 행사에 함께 했습니다. 매년 신기술을 만들어 제공하는 것도 놀라웠고, 새로운 기술에 열광하는 전세계 개발자의 열정도 감동적이었습니다 🔥
re:invent에서 발표된 기술들을 어떻게 베이글코드의 인프라와 서비스에 적용할지 기대가 됩니다!