[레포트] AWS의 오픈소스와 컨테이너 전략, 윈도우 서버 라이센스 업데이트까지 한꺼번에!

AWS Partner Summit Korea 2022 세션중「AWS의 오픈소스와 컨테이너 전략, 윈도우 서버 라이센스 업데이트까지 한꺼번에!」세션을 정리해 봤습니다.
2022.05.27

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 AWS Partner Summit Korea 2022 세션중「AWS의 오픈소스와 컨테이너 전략, 윈도우 서버 라이센스 업데이트까지 한꺼번에!」세션을 정리해 봤습니다.

세션 개요

DESCRIPTION

최근 화두인 클라우드 네이티브와 디지털 트랜스포메이션은 오픈소스와 밀접하기에, 많은 고객은 직접 오픈소스 생태계를 만들며 혁신하고 있습니다. AWS는 지금까지 깃허브에서 오픈소스 참여와 지원을 위한 2,000개 이상의 자체 프로젝트 진행 및 다양한 프로젝트에 코드를 공여하며 오픈소스의 훌륭한 리더로 자리매김하고 있습니다. 이번 세션에서는 최근 업데이트된 오픈소스와 AWS 오픈소스의 중요 서비스인 AWS 쿠버네티스 로드맵, AWS 컨테이너 서비스와 함께, 비용 효율적인 윈도우 라이센스 업데이트 내역도 살펴봅니다.

SPEAKERS

강연자

세션

Agenda

  • AWS와 오픈소스
  • AWS의 주요 오픈소스 프로젝트
  • AWS 컨테이너 관련 서비스 업데이트
  • 윈도우 라이센스 업데이트

AWS와 오픈소스

  • 2019년 오픈소스 관련 발표에서 기업 주도 소프트웨어 환경에서는 문제를 해결하는 형태의 접근이 아닌 비즈니스를 위한 접근을 하기 때문에 소프트웨어가 혁신을 이루기 어렵다고 이야기함
  • 결론적으로 디지털 전환과 같은 혁신이 절대적인 가치를 지니게 된 시점에서는 오픈소스는 사용자가 바로 혁신을 주도하는 최신의 소프트웨어 기술 그 자체가 되는 것

  • 다양한 고객들과 함께하난 아마존은 지구상에서 가장 고객에게 집중하는 기업이 되는 것을 목표로 하고 있음
  • 그렇기에 아마존은 서비스와 로드맵을 고객의 요구에 의해서 만들고 계획하게 됨
  • 전체 로드맵의 95는 고객의 요구에 의해서 만들어지며 이러한 요구 사항들은 오픈소스 커뮤니티에 공유되면서 오픈소스의 혁신에 기여하고 있음
  • AWS는 지금까지 깃허브에서 오픈소스 참여와 지원을 위한 2000개 이상의 자체 프로젝트를 진행하고 있음
  • 그리고 이러한 프로젝트를 통해서 다양한 형태의 코드를 공유하며 오픈소스의 훌륭한 리더로 자리매김하고 있음
  • 이러한 코드 공유는 매년 30% 이상씩 그 기여도가 증가하고 있으며, 최신 오픈소스 솔루션을 고객이 원하는 형태로 배포하고 운영하는 다양한 형태의 방법들 또한 함께 지원하고 있음
  • 온프레미스, 하이브리드 그리고 멀티 엣지 컴퓨팅이나 다양한 IoT 환경 뿐만 아니라 AIML을 활용한 서비스, 인공위성, 자율주행 등 기존의 기술들을 융합한 새로운 기술적인 접근에 대해서도 상황에 맞는 다양한 조합이 가능함
  • AWS는 모든 설계와 접근 방식이 열려 있으며 기존의 접근 방식을 고수하지 않음
  • 고객의 비즈니스 환경이 변화하고 있다면 그리고 세상이 변화하듯이 오픈소스의 모든 솔루션들이 그렇듯이 모든 가능성에 대해서 열려있음
  • AWS가 오픈소스로 개발한 코드를 고객이 직접 운영하고 피드백을 주는 것도 고객이 오픈소스의 커뮤니티 일원이 되어 커뮤니티에 기여하는 또 다른 접근 방법임

  • EKS-Distro 같은 것들이 제공되고 있음
  • 뿐만 아니라 Karpenter나 CDK 같은 것들도 AWS 환경이 아닌 곳에서도 활용할 수 있도록 수정과 사용이 가능하도록 오픈해 놓고 있음
  • 비즈니스와 애플리케이션 개발에 보다 집중하고자 하는 고객들에게는 오픈소스 기반의 AWS 서비스를 활용하여 그들이 오픈소스 솔루션을 간편하게 운영할 수 있는 방법들도 제공됨
  • Amazon Aurora나 Amazon OpenSearch Service 같은 솔루션들은 오픈소스를 기반으로 AWS가 운영을 해주고 있는 서비스임
  • EKS나 Amazon managed serice for Prometheus, Amazon managed Grafana 같은 서비스들도 오픈소스를 서비스로 제공하는 연장선에서 이해할 수 있음

AWS의 주요 오픈소스 프로젝트

  • 오픈소스는 고객 중심이고 혁신의 아이콘이자 커뮤니티 기반으로 함께 성장하는 모델이며 기존보다 더 나은 품질과 보안 그리고 기능 이런 것들을 제공하면서도 운영 부담을 줄일 수 있는 최선의 접근 방법이 있기 때문임

  • AWS는 오픈소스 생태계에서 사용자이자 개발자이자 운영자의 역할을 동시에 하고 있음
  • Amazon Keyspaces는 고가용성의 확장 가능한 관리형 Apache Cassandra 호환 데이터베이스 서비스임
  • FreeRTOS의 경우에는 소형 저출력 엣지 디바이스를 쉽게 프로그래밍 배포 그리고 보호 연결할 수 있는 마이크로컨트롤러용 실시간 오픈 소스 운영 체제임
  • MIT 오픈소스 라이센스로 자유롭게 배포되는 FreeRTOS에는 커널은 물론 여러 업종 및 애플리케이션의 사용 사례에 적합하며 계속 추가되고 있는 소프트웨어 라이브러리 세트에도 포함되어 있음
  • AWS Lambda 같은 경우에는 Firecracker를 이용해서 또 오픈소스로 제공되는 부분들이 있음
  • Firecracker를 사용하면 기존 VM보다 향상된 보안 및 워크로드 격리를 제공하는 등 동시에 컨테이너의 속도와 리소스 효율성을 지원하는 microVM이라는
    경량 가상 머신의 워크로드를 배포할 수도 있음
  • 그리고 AWS RoboMaker의 경우에는 클라우드 서비스로 로봇 운영체제 로봇 OS를 확장하는 로봇공학 시뮬레이션 서비스임
  • 이를 통해 로봇공학 개발자들은 시뮬레이션 워크로드를 비용 효율적으로 확장 및 자동화하거나 단일 API 호출로 대규모 병렬 시스템을 실행할 수도 있음
  • 또한 사용자 정의의 무작위 3D 가상 환경을 생성할 수도 있음
  • 시뮬레이션 서비스를 사용하면 애플리케이션 테스트 속도를 높이고 정의한 템플릿에서 수백 개의 새로운 세계를 만들 수도 있음
  • Amazon EKS는 쿠버네티스에 AWS에서 제공하는 고객을 대신해서 쿠버네티스를 운영 관리해 주는 서비스임
  • 단순한 운영 관리를 넘어서 AWS는 EKS의 서비스를 개선하고 다양한 오픈소스 프로젝트에 참여하고 있으며 업스트림의 기능 개선 및 신규 컴포넌트 개발에도 적극적으로 참여하고 있음
  • 뿐만 아니라 Amazon ElasticSearch ES 같은 경우에는 Open Distro For Elasticsearch라는 형태로 배포되어 있는 것들을 함께 기여하고 있고 AWS App Mesh 라든지 그다음에 토치 서버 여러 가지의 ElastiCache for Redis, Memcached 등도 고객을 위해 운영하면서 기능의 개선에도 함께 기여하고 있음

  • 오라클이 주도하고 있는 Open JDK의 커뮤니티 멤버로서 참여하지만 실제 Open JDK를 활용할 때 발생하는 업데이트 문제나 ARM 아키텍처를 지원하는 문제 그리고 성능 분석을 위한 컴포넌트 추가 개발 등을 통하여 고객이 보다 자유롭게 자바를 활용할 수 있도록 돕는 일들을 하고 있음

  • 업데이트가 많은 워크로드들에 대해서 Lucene의 성능을 개 선하는 패치라든지 그리고 검색순위를 최적화하기 위한 인덱싱 기능을 추가하거나 레이지 로딩 기반으로 Heap 메모리 사용량을 최적화하는 등 다양한 기능 개선 및 버그 수정 내역들이 Lucene의 업스트림에 적용되어 있음

  • Open Telemetry에 다양한 데이터 컬렉터 매트릭 API에 대한 기능 그리고 언어 지원들을 추가하고 있음
  • 또한 버그 수정을 포함해서 모든 코드들은 업스트림에 100% 통합되고 있음

  • TLS 암호화 그리고 모델링이나 장애 조치를 위한 기능들이 추가되거나 성능 개선을 위한 클라이언트 캐싱 기능들을 구현하고 운영 경험을 살려서 안정화를 위한 다수의 안정화 기능들이 추가되고 있음

  • AutoGluon 같은 경우는 머신러닝에 대한 초보자와 전문가 모두를 대상으로 하고 자동화된 스택 앙상블, 딥러닝 텍스트, 이미지 및 표형식 데이터에 걸친
    실제 애플리케이션에 중점을 두고 사용하기 쉽고 쉽게 확장할 수 있는 AutoML을 지원함
  • 또한 Deep Graph Library 같은 경우는 인공신경망에서 가장 기본적으로 사용하고 있는 Fully-function network나 CNN RNN 등이 있음
  • 이런 인공 신경망들은 보통 벡터나 행렬 형태로 인풋이 주어짐
  • 하지만 인풋이 그래프인 경우에는 벡터나 행렬 형태로 나타나는 대신에 Graph Neural Network를 사용해서 나타낼 수 있는데, 여기서 이야기 하는 DGL은 그래프 형태의 데이터에서 딥러닝을 사용하는데 특화된 파이썬 라이브러리로써 아마존이 함께 개선해 나가고 있음

  • 라이센스 비용이 많이 드는 닷넷 프레임워크를 닷넷 코어로 변환하는 작업을 돕는 서비스를 제공하거나 Microsoft SQL 서버를 리눅스 서버에서 운영할 수 있게 지원을 하기도 함
  • Database Migration Service 이용해서 오픈소스 데이터베이스로의 이전을 돕기도 함

  • Aurora PostgreSQL은 Babelfish를 통해 Microsoft SQL server의 전용 SQL 언어인 T-QL을 이해하고 동일한 통신 프로토콜을 지원하게 됨
  • 따라서 원래 SQL server용으로 작성된 앱을 최소한의 코드 변경만으로 Aurora에서 사용할 수 있게 됨
  • 결과적으로, SQL server 2005 이상에서 실행되는 애플리케이션을 수정하고 Aurora로 이동하는데 필요한 작업이 줄어들게 됨
  • 그래서 마이그레이션 속도를 높이고 위험을 낮추며 비용 효율성을 개선할 수 있음

  • AWS는 다양한 Linux를 지원함
  • AWS 용으로 구축된 안정적이고 입증된 아마존 Linux와 컨테이너 환경을 위해서 특별히 보안 및 성능을 최적화한 Bottlerocket까지 모두 AWS가 Linux 환경을 위해서 제공하는 오픈소스 소프트웨어들임

  • 애플리케이션은 이제 빠르게 발전하고 잠재적으로 수백만 명의 사용자들에게 맞게 그리고 빠르게 확장되어야 하며 글로벌 가용성을 확보학, 액사바이트는 아닐지라도 패타바이트의 데이터를 관리하고 이것들에 대해서 밀리초 이내에 응답해야 함

  • 이러한 현대적 애플리케이션 구축은 앞서 언급한 다양한 오픈소스 프로젝트들과 라이브러리 그리고 교육 프로그램 그리고 운영 체제 옵션들이 환경 변화에 따라서 능동적으로 적용되고 테스트될 수 있는 유연한 구조가 필수 요소가 되었음
  • 이러한 환경을 위해서 컨테이너를 활용하여 고객 경험과 비즈니스 민첩성을 향상시키고 총 소요 비용을 절감하며 마지막으로는 다양한 데이터 매트릭을 통해서 다양한 인사이트를 통한 개선을 할 수 있게 돕게 됨

  • AWS에서 컨테이너를 활용하는 다양한 방법들이 있음
  • ECS와 Fargate를 활용한 간단하게 구축하는 방법들 그리고 Red Hat OpenShift를 서비스로 제공받는 방법
  • 그 다음에 App Runner를 통해서 단일 인터페이스를 통합하는 방법
  • 그리고 고객이 처한 비즈니스 환경에 맞는 접근 방법들을 필요로 맞게 이런 것들을 선택할 수 있음

AWS 컨테이너 관련 서비스 업데이트

  • AWS에서 보안은 항상 최우선 사항임
  • 오픈소스 쿠버네티스의 보안 로드맵에 기여하고 있으며 쿠버네티스의 커뮤니티에 적극적으로 참여하고 있음
  • AWS에서 쿠버네티스의 배포 및 관리를 단순화하는 오픈소스 구성 요소들이 있음
  • 이미지에 보는 것 처럼 다양한 SIG 그룹, AWS, abs, efs, fx for, csi 드라이버들 이런 것들이 바로 SIG 그룹에 참여하는 방식임
  • 그리고 AWS Labs에서는 Carpenter 그리고 EKS-D를 통한 EKS 배포판 이런 것들도 쿠버네티스의 커뮤니티 발전을 위해서 기여하고 있는 부분임

  • 고가용성의 안전하고 신뢰성 높은 관리형 컨트롤 플레인을 시작으로 데이터 플레이의 운영 버전을 줄이는 관리형 노드 그룹 그리고 서버리스 컨테이너 컴퓨팅 엔진인 Fargate도 추가했음
  • 이는 컨트롤 플레인과 데이터 플레인을 관리형으로 제공하는데 초석이 될 수 있음

  • 이렇게 EKS 로드맵은 크게 네 가지의 카테고리로 나눌 수 있음
  • 보안 및 안정성 관리 및 관찰 가능성, 성능 및 규모 그리고 마지막으로 일관성 등 임
  • 보안 및 안정성에서는 최근 관리형 노드 그룹에서 테인트 노드를 지원하는 기능이나 병렬 업데이트의 기능 그리고 Bottlerocket 지원 등이 추가되었음
  • 그리고 관리 및 관찰 기능성에서는 EKS의 Connector와 EKS Addon 기능들이 추가되었음
  • 추후에 Open Telemetry라든지 그다음에 CSI 드라이버 로드밸런서 컨트롤러와 매트릭 서버를 위한 애드온들 그리고 관련 애드온들이 추가될 예정임
  • 여기에 더해서 관련 애드온들의 설정을 커스터마이징 하는 기능까지도 고려 되고 있음
  • 성능 및 규모 측면에서는 단일 클러스터 내에서 15000 노드를 지원하는 기능이라든지 이것보다 더 큰 메가클러스터의 지원 관련된 기능들이 예정되어 있음
  • 또한 앞서서 언급 했던 Karpenter들을 이용한 빠른 컨테이너 스케일 인&아웃 기능들 그리고 컨트롤 플레인의 스케일링 성능 등에 대한 개선들이 포함되어 있음

윈도우 라이센스 업데이트

  • 윈도우 서버 고객분들은 작년 윈도우 2008 및 2008 R2에 대한 지원이 종료된 것을 알고 있을 것임
  • 여전히 지원 되지 않는 OS에서 실행 중인 많은 워크로드가 있음
  • 2008년 뿐만 아니라 지원 종료일 부터 6년이 지난 윈도우즈 2003년에서 실행되는 워크로드들도 여전히 있음
  • 중요한 작업 부하도 여전히 많이 있음
  • 시간이 빠르게 흘러서 지금부터 약 2년 후에 윈도우 2012 그리고 2012 R2에 대한 지원도 조만간 종료될 예정임

  • 첫 번째는 전문지식 그리고 설치에 대한 경험들
  • 설치 미디어 그리고 이런 것들이 손실되어 있다는 것
  • 두 번째는 애플리케이션을 리팩토링이라든지 코딩을 위한 높은 비용과 시간이 필요하다는 점
  • 세 번째는 업그레이드를 실패할 위험이 크다는 점
  • 네 번째는 호환되지 않는 COTS 상용 소프트웨어의 경우에는 이전이 어려울 수도 있다는 것

  • EMP for Windows Server 같은 경우는 EOS 문제를 해결할 뿐만 아니라 앞으로 발생한 문제에 대해서도 대응할 수 있게 하는 미래지향적 솔루션임
  • 위험을 줄이고 지원되는 최신 윈도우 서버 OS를 실행하는 모든 성능 이점을 제공하며 애플리케이션의 리팩토링이나 재코딩이 필요하지 않고 지원 비용이 확장되지 않고 운영 비용이 절감되기 때문에 더욱 비용 효율적임

  • 이미지 왼쪽에는 이전 버전의 윈도우 서버에 배포된 레거시 응용 프로그램이 있음
  • EMP 프로세스를 거친 후에 목표 환경에서는 최신 윈도우 서버 OS의 배포된 EMP 호환성 패키지와 이에 래핑 되어 있는 코드 변경 없이 배포된 레거시 응용 프로그램을 볼 수 있음
  • EMP 호환 패키지에는 기존 OS에서 애플리케이션을 분리하고 세 가지 주요 기능들을 제공함
  • 첫 번째는 리디렉션임
  • 호환성 패키지는 레거시 애플리케이션 OS에 대해서 수행하는 모든 API 호출을 가로채서 호환되지 않는 경우에 이를 해결함
  • 예를 들어 애플리케이션이 닷넷 1.0과 같은 이전 버전의 닷넷에 의존하는 경우 호환성 패키지 자체에 포함된 닷넷 런타임으로 리디렉션하고 기본 OS에 대해서 수행하는 모든 호출은 최신 운영 닷넷 런타임으로 전달됨
  • 패키지에서 마찬가지로 패키징 되는 레지스트리 키 하드 코딩된 윈도 파일 경로 그 다음에 네트워크 포트 등에 대한 리디렉션도 수행할 수 있음
  • 두 번째 기능은 격리
  • 이 기능을 사용하면 호환성 패키지가 동일한 OS에서 여러 버전의 런타임을 실행할 수 있음
  • 이전 런타임은 외부 환경과 격리되어 있으며 레거시 애플리케이션에서만 액세스 할 수 있음
  • 마지막으로 호환성
  • EMP는 다른 애플리케이션 계층 데이터베이스 서비스 등과의 통합 및 애플리케이션 동작을 유지하면서 애플리케이션과 OS간 호환성을 제공함

  • EMP는 두 가지 패키지 옵션을 사용할 수 있음
  • 라이센스 키 및 기타 설정 매개 변수와 함께 설치 프로그램을 사용해서 레거시 애플리케이션을 배포할 수 있는 경우 EMP 스냅샷 패키지가 가장 쉬운 옵션임
  • 그러나 레거시 OS에 실행 중인 응용 프로그램이 있고 더 이상 설치 미디어는 찾을 수 없거나 또는 설정 매개 변수에 대한 정보가 없거나 해당 응용 프로그램을 다시 설치할 수 있는 방법을 모르는 경우는 리버스 패키지에 옵션을 선택할 수 있음
  • 이 옵션은 현재 응용 프로그램을 종속성을 모니터링하고 작업할 수 있도록 런타임 환경을 만든 후에 해당 환경을 EMP 패키지로 시뮬레이션 하게 됨

  • 모든 패키징 기술에 대한 주요 관심사는 패키지로 인해 애플리케이션 성능에 영향을 받는지에 대한 여부임
  • EMP 패키지는 성능에 대한 영향력이 거의 없음
  • EMP 패키징은 매우 가볍고 최소한의 리소스만 사용함
  • 실제 배포해 본 고객들의 경험에 따르면 사용된 CPU 사용량 그리고 디스크 공간 및 램은 무시할 수 있는 수준임
  • 또한 패키지 기본적으로 윈도우 폴더 구조는 완전히 격리되며 환경에 에이전트나 클라이언트 등을 설치할 필요가 없고 백엔드에 인프라에 대한 연결이 전혀 필요하지 않음

  • 결론적으로 AWS에는 현대화된 애플리케이션 환경을 위해서 최신의 오픈소스 서비스를 활용하기에 최적의 환경을 제공하고 있으며 윈도우 서버와의 통합도 간단하게 할 수 있음

  • 앞서 이야기한 다양한 솔루션들의 활용한 권장 아키텍처나 그리고 소프트웨어 구성 등 다양한 형태의 샘플 아키텍처는 아마존 빌더 라이브러리에서 확인할 수 있음
  • 아마존 빌더 라이브러리에는 아마존에서 실제 구현한 사례를 자세한 설명과 함께 확인할 수 있으며 설치 스크립트를 통해서 간단하게 적용하고 테스트 해 볼 수 있음 

  • 컨테이너 환경에 대한 구성과 설계 등에 대한 예제 코드를 찾고자 하면 컨스트럭터 허브를 방문하길 바람
  • 검증된 컨스트럭트를 신뢰할 만한 주요 개발사들의 엔지니어들이 배포해 놓은 예제를 통해서 확인할 수 있음
  • 모든 종류의 CDK, CDK8s, CDKTF 등을 지원하며 다양한 언어와 SDK 그리고 클라우드 프로비저닝 옵션들을 확인할 수 있음 

참고

본 블로그에서 사용한 이미지는 AWS Summit Korea에서 제공된 발표자료와 영상을 사용했습니다.