aws-ec2

2 개의 포스트

S3 Files 출시, S3 버킷을 파일 시스템으로 액세스 가능하게 지원 | Amazon Web Services (새 탭에서 열림)

Amazon S3 Files는 S3 버킷을 고성능 파일 시스템으로 변환하여 AWS 컴퓨팅 자원과 원활하게 연결하는 혁신적인 서비스입니다. 기존의 객체 스토리지와 파일 시스템 간의 기술적 경계를 허물어, 사용자는 S3의 비용 효율성과 내구성을 유지하면서도 NFS v4.1 기반의 인터랙티브한 데이터 수정 및 공유 기능을 활용할 수 있습니다. 이를 통해 ML 모델 학습, AI 에이전트 협업 등 다양한 워크로드에서 데이터 중복 없이 실시간 동기화가 가능한 중앙 데이터 허브를 구축할 수 있게 되었습니다. **S3 Files의 주요 특징과 장점** * S3 버킷을 EC2, ECS, EKS, Lambda 등 다양한 컴퓨팅 서비스에서 네이티브 파일 시스템으로 마운트하여 직접 접근할 수 있습니다. * 파일 시스템에서 변경된 데이터는 자동으로 S3 버킷에 반영되며, 반대로 S3 객체의 변경 사항도 파일 시스템에 수 초 내로 동기화됩니다. * 여러 컴퓨팅 리소스에서 동시에 접근하여 데이터를 공유할 수 있어, 클러스터 간 별도의 데이터 복제 과정이 필요하지 않습니다. * NFS v4.1+ 표준 프로토콜을 지원하여 파일 및 디렉토리의 생성, 읽기, 업데이트, 삭제 등 모든 표준 파일 작업을 수행할 수 있습니다. **성능 최적화 및 동작 메커니즘** * 내부적으로 Amazon EFS 기술을 활용하여 활성 데이터에 대해 약 1ms 수준의 매우 낮은 지연 시간을 제공합니다. * 저지연 액세스가 필요한 파일의 메타데이터와 콘텐츠는 고성능 스토리지에 배치되며, 대규모 순차 읽기가 필요한 파일은 S3에서 직접 제공하여 처리량을 극대화합니다. * 바이트 범위 읽기(Byte-range reads)를 지원하여 요청한 데이터만 전송함으로써 데이터 이동량과 비용을 최소화합니다. * 지능형 프리페칭(Pre-fetching) 기능을 통해 사용자의 데이터 액세스 패턴을 예측하고 고성능 스토리지에 데이터를 미리 로드할 수 있는 제어권을 제공합니다. **보안 및 관리 아키텍처** * AWS IAM과 통합되어 ID 및 리소스 정책을 기반으로 파일 시스템과 객체 수준에서 세밀한 접근 제어가 가능합니다. * 데이터 전송 시에는 TLS 1.3으로 암호화되며, 저장 시에는 SSE-S3 또는 AWS KMS를 통한 고객 관리 키 암호화를 지원합니다. * S3 객체 메타데이터 내에 UID(사용자 ID)와 GID(그룹 ID) 정보를 저장하여 POSIX 표준 권한 체계를 유지합니다. * Amazon CloudWatch를 통해 드라이브 성능을 모니터링하고, AWS CloudTrail로 모든 관리 이벤트에 대한 로깅을 수행할 수 있습니다. **간편한 설정 및 배포 프로세스** * S3 콘솔의 'File systems' 메뉴에서 대상 버킷을 선택하는 것만으로 파일 시스템을 빠르게 생성할 수 있습니다. * VPC 내에 네트워크 엔드포인트인 '마운트 타겟'을 생성하여 컴퓨팅 자원이 파일 시스템에 안전하게 접근하도록 구성합니다. * 최신 버전의 amazon-efs-utils 패키지를 사용하여 표준 리눅스 마운트 명령어로 S3 데이터를 로컬 디렉토리처럼 즉시 사용할 수 있습니다. S3 Files는 객체 스토리지의 경제성과 파일 시스템의 유연성을 동시에 요구하는 현대적인 클라우드 아키텍처에 최적화된 솔루션입니다. 특히 데이터가 지속적으로 변하는 AI 에이전트 워크플로우나 여러 컨테이너가 동일한 데이터셋에 접근해야 하는 ML 파이프라인을 운영 중인 팀에게 강력히 추천합니다. 기존 S3 기반 데이터 레이크를 별도의 데이터 이전 없이 즉시 고성능 공유 파일 시스템으로 확장해 보시기 바랍니다.

Not just another network latency issue: How we unraveled a series of hidden bottlenecks (새 탭에서 열림)

사용량 추정 서비스의 배포 시마다 반복되는 높은 시작 지연 시간(Startup Latency) 문제를 해결하기 위해, 시스템 전반의 네트워크 경로와 인프라 계층을 다각도로 조사했습니다. 단순히 애플리케이션 코드를 수정하는 수준을 넘어, 사이드카 프록시 설정, 리눅스 커널 버그, 클라우드 인스턴스의 네트워크 대역폭 한계 등 복합적인 병목 현상을 단계별로 추적해 해결했습니다. 최종적으로 인프라 최적화와 우아한 종료(Graceful Shutdown) 메커니즘을 결합하여 서비스 안정성을 확보하고 팀의 경보 피로도를 대폭 낮추는 결론에 도달했습니다. **Envoy 사이드카의 CPU 병목 해소** * 배포 단계에서 원격 캐시 데이터를 대량으로 불러올 때, 사이드카 프록시인 Envoy가 모든 쿼리를 배치 처리하며 과도한 CPU를 사용함을 확인했습니다. * Envoy가 할당된 CPU 자원(2코어)을 모두 소진하여 쓰로틀링(Throttling)이 발생했고, 이로 인해 패킷 처리 지연과 TCP 재전송(Retransmit)이 급증했습니다. * Envoy에 할당되는 CPU 자원을 늘려 1차적인 지연 시간 수치를 개선했으나, 여전히 배포 중 지연 시간이 300ms에서 1s 사이를 진동하는 문제가 남았습니다. **리눅스 커널 버그 패치 및 트래픽 분산** * 조사 과정에서 AWS의 Elastic Network Adapter(ENA)를 사용할 때 발생하는 리눅스 커널 버그를 발견했습니다. * 해당 버그는 네트워크 트래픽을 8개의 전송 큐(Transmit Queue)에 분산하지 않고 첫 번째 큐에만 몰아넣어 병목을 유발하고 있었습니다. * 트래픽을 모든 큐에 골고루 분산시키는 핫픽스를 적용하여, 배포 기간 외에 간헐적으로 발생하던 지연 시간 스파이크 문제를 해결했습니다. **AWS 인스턴스 네트워크 대역폭 최적화** * 커널 수정 후에도 배포 중 지연이 지속되자 AWS 전용 메트릭인 `bw_in_allowance_exceeded`와 `bw_out_allowance_exceeded`를 분석했습니다. * 분석 결과, 배포 시 발생하는 급격한 트래픽이 인스턴스 유형별로 할당된 최대 네트워크 대역폭을 초과하여 하이퍼바이저 수준에서 패킷 드롭이 발생하고 있었습니다. * 이를 해결하기 위해 더 높은 대역폭을 제공하는 네트워크 최적화(Network-optimized) EC2 인스턴스로 마이그레이션하여 대역폭 제한 문제를 해결했습니다. **종료되는 파드로의 요청 라우팅 방지** * 모든 인프라 개선 후에도 남아있던 1초 가량의 지연 스파이크가 원격 캐시 파드의 종료(Terminating) 시점과 일치함을 포착했습니다. * 기존의 우아한 종료 로직이 Envoy 클라이언트의 처리 중인 요청(In-flight requests)을 충분히 기다리지 못해, 종료 중인 파드에 요청이 전달되어 타임아웃과 재시도가 발생하고 있었습니다. * 파드에 `preStop` 훅을 구현하여 종료 전 유지 관리 모드 상태임을 클라이언트에 알리고, 모든 요청이 완료될 때까지 대기하도록 설정하여 지연 시간을 최종적으로 안정화했습니다. 성능 최적화 과정에서 단일 원인을 찾기보다 네트워크 스택의 각 계층(프록시, OS 커널, 클라우드 인프라, 애플리케이션 생명주기)을 체계적으로 검증하는 접근 방식이 중요합니다. 특히 대규모 트래픽이 발생하는 배포 시점에는 시스템의 숨겨진 한계치가 드러나기 쉬우므로, 클라우드 제공업체의 전용 메트릭과 네트워크 큐 상태를 면밀히 모니터링할 것을 권장합니다.