Amazon Web Services 한국 블로그
클라우드 기술의 5가지 주요 흐름 – 2019년 회고
이제 2019년도 하루 밖에 남지 않았네요!
매년 해왔던 블로그 회고 (2015년, 2016년, 2017년, 2018년)의 일환으로 이번에는 한해 동안 클라우드 기술의 흐름이 어떻게 변화했는지 살펴보고자 합니다. 제가 지난 5년간 AWS에서 일하면서, 올해 개인적으로 중요하다고 생각된 것들을 뽑아 보았는데, 혹시 내년에 여러분의 기술 자산을 채우기 위한 목표를 세운다면 어느 분야에 집중하면 좋을지 실마리가 되길 바랍니다.
1. 클라우드 네이티브(Cloud Native) 생태계의 약진
올해는 오픈소스 컨테이너 오케스트레이션 도구인 쿠버네티스(Kubernetes, k8s)의 약진이 돋보이는 해였습니다. 현업에서 사용하는 사례가 그렇게 눈에 띄지 않을 수 있지만 이를 둘러싼 기술 생태계는 크게 진화하였습니다. 오픈소스 쿠버네티스를 관리하는 클라우드 네이티브 컴퓨팅 재단(CNCF)에는 과거 아파치 프로젝트의 명성에 상응하는 신규 클라우드 오픈소스 프로젝트들이 대개 늘어났습니다. 그중에서도 모니터링 및 로깅을 위한 도구인 Prometheus와 Fluentd, 그리고 마이크서비스 메시를 위한 프록시 도구인 Envoy 등의 사용이 대폭 늘어났습니다. 아직 인큐베이팅 프로젝트에 있지만, k8s 패키징 관리 도구인 Helm이나 API 통신 프로시저인 gRPC 등도 많이 주목을 받았습니다. (과거 다양한 Hadoop 플랫폼처럼 더 많은 CNCF 오픈 소스 프로젝트들이 Sandbox를 통해 계속해서 늘어나고 있습니다.)
AWS에서도 K8s 관리형 서비스인 Amazon EKS, Envoy를 비롯 서비스 메쉬를 위한 AppMesh 등을 통해 좀 더 쉽게 컨테이너 기반 워크로드를 마이크로서비스 기반으로 구성할 수 있도록 도와주고 있습니다. 최근에는 AWS Fargate for EKS와 같은 서버리스 컨테이너 서비스를 추가함으로서 제한된 자원을 가진 프로젝트에서 서비스 구현 및 관리에 드는 부담을 많이 줄여주는데 중점을 두고 있습니다.
물론 오픈소스를 직접 활용하는 경우, 기술 내재화를 도와주는 측면이 있겠지만 다른 한편으로 선행 적용하는 과정에서 생기는 학습 비용(Learning Curve) 및 운영 부담이라는 상충하는 부분이 있습니다. 따라서, 클라우드 네이티브 기술을 어떻게 활용할지는 현재 프로젝트와 회사 상황에 적합한 방식을 취사 선택 혹은 병행하는 것이 좋은 전략이라고 생각됩니다.
2. 데브옵스를 넘어 극강의 장애 극복으로
클라우드가 가져온 가장 큰 혜택 중에 하나가 인프라 자체를 소프트웨어 처럼 다룰 수 있게 되었다는 점이죠. 덕분에 소규모팀에서도 데브옵스(DevOps)라는 이율 배반적인 두 가지 일이 병행 할 수 있게 되었습니다. 하지만, 서비스 장애는 쉽게 피하기 어렵죠. 서비스 장애에 대응하는 방법이 크게 2가지가 있는데, 인프라를 클라우드 아키텍처로 서비스 복원성을 높이는 것과 단일 애플리케이션을 마이크로서비스로 구성해서 장애 전파를 최소화 하는 것입니다. 전자의 경우, 데브옵스라는 모범 사례를 뛰어넘어 최근에 화두가 된 개념이 바로 사이트 신뢰성 엔지니어링(Site Reliability Engineering, SRE)과 카오스엔지니어링(Chaos Engineering)이라 할 수 있습니다.
SRE는 구글에서 처음 시작한 개념으로 데브옵스 환경에서 적절한 서비스 수준 목표(Service Level Objectives)을 정하여 장애에 대한 가용성을 정량화 한 후, 이를 보장하기 위한 일련의 과정을 말하는 것으로 구글에서 시작되어 기존 데브옵스팀을 가진 기업으로 주로 전파되었습니다. 데브옵스가 개발 및 배포 과정의 상호 단절을 줄여주는 도구나 프로세스에 대한 것이라면 SRE는 보다 서비스 안정성을 중점을 두고 있는 운영 관점에 있습니다. 주로 큰 규모의 서비스를 가진 개발팀과 함께 운영되기에 적합합니다.
이와 달리 넷플릭스나 아마존 등에서는 카오스 엔지니어링이라는 장애 주입(Failure Injection) 기법을 통해 서비스 안정성을 높이려는 시도가 돋보입니다. 실서비스에 장애를 직접 발생시켜, 발견되지 못했던 오류를 밝혀내는 것으로 이를 위해서는 복원성 높은 클라우드 기반의 연쇄 장애가 발생하지 않도록 하는 마이크로서비스 아키텍처가 필수적입니다.
올해 둘 다 개발자들 사이에 많은 화두가 되었고, 주요 기업들은 SRE팀을 꾸리기 시작하기도 했습니다. 국내에서도 이들 기법에 대한 토론을 위한 국내 커뮤니티와 밋업이 작년 부터 진행되고 있으니, 관심 있는 분들은 참여해 보셔도 좋겠습니다.
3. 데이터레이크를 위한 통합 SQL 분석 도구 확산
데이터 분석 분야에서 클라우드를 활용하는 대표적인 장점이 바로 데이터 사일로를 없앨 수 있다는 점입니다. 모든 데이터를 하나의 저장소에 부어서 필요에 따라 공유할 수 있으면 좋겠다는 아이디어는 (조직의 데이터 폐쇄성 뿐만 아니라 실제 그런 저장소를 운영하기 쉽지 않다는 점에서) 기존 온-프레미스 환경에서 구현되기 어려웠습니다. 클라우드 기반 데이터레이크(Data Lake) 개념은 데이터 저장소 안정성 및 가용성 뿐만 아니라 다양한 분석 도구로 접근할 수 있다는 장점이 있습니다.
AWS에서는 Amazon S3가 다양한 데이터 분석 도구의 데이터레이크 저장소 역할을 하면서 다양한 분석 도구의 입출력 지점이 되고 있습니다. Amazon Athena는 S3에 저장된 정규화된 데이터 파일에 누구나 손쉽게 SQL만으로도 쉽게 질의를 할 수 있어 데이터 분석의 진입 장벽이 낮아졌습니다. 하지만, 다양한 데이터 소스가 분산되어 있는 경우 이를 통합적으로 질의하는 방법에 대한 요구도 늘어나고 있습니다.
최근에는 클라우드 기반 DW서비스인 Amazon Redshift에서 S3와 관계형 DB인 Amazon RDS에 저장된 데이터와 함께 Redshift 통합 질의(Federated Query)나 Athena 기반 서버리스 통합 질의 등도 가능해졌습니다.
이를 위해 만들어진 PartiQL 표준을 사용하면 질의 구문을 기본 데이터 형식 또는 데이터 저장소와 분리하여 여러 데이터 저장소 및 데이터 형식에서 통합 질의가 가능합니다. 앞으로 데이터 분석 도구나 저장소와 관계 없이 손쉽게 질의하고 결과를 얻어내는 것이 더욱 쉬워질 전망입니다. 따라서, 데이터 과학자들이 현업에 계신 분들에게 좀 더 좋은 분석 도구를 제공하는 데 도움이 되지 않을까 싶네요.
4. 기계 학습 모델 개발의 진입 장벽 파괴 시도
최근 인공지능(AI) 및 기계 학습(Machine Learning, ML) 분야의 비약적인 발전은 기존 개발 영역에 큰 변화를 가져오고 있습니다. AI/ML을 통한 스마트 애플리케이션 및 자동화 등이 기존에 극복하지 못했던 부분을 해결하고 있기 때문인데요. 하지만, 흔히 ML 모델 개발, 훈련 및 배포로 이어지는 일련의 개발 과정은 기존 개발자들에게 같은 익숙하지 않을 뿐더러 많은 수작업이 필요한 부분이었습니다. 최근에는 이러한 어려움을 해결해 주는 클라우드 기반 관리형 서비스와 자동화 도구들이 선보이고 있구요. 흔히 AutoML이라 불리는 이미 구현된 모델을 손쉽게 사용하는 서비스들도 좀 더 다양하게 나오고 있습니다. 그래서, 기존에 기계 학습 모델을 직접 개발하거나 데이터를 라벨링하고 훈련하는 과정 등에서 해왔던 수고를 많이 덜 수 있을 뿐 아니라 진입 장벽도 많이 낮아지고 있습니다.
AWS에서는 대표적으로 Amazon SageMaker라는 ML서비스가 있는데, 올해 SageMaker Studio라는 통합 개발 환경(IDE)를 출시했습니다. 이제 한 화면에서 모델 개발, 훈련, 테스트, 모니터링 등을 손쉽게 해볼 수 있습니다. 뿐만 아니라, 기존 AutoML의 단점인 맞춤형 모델을 만들기 어렵다는 문제를 해결한 SageMaker AutoPilot은 예측 및 분류 등이 필요한 분야에서 나만의 모델을 구성할 수 있습니다.
최근에 딥러닝을 통해 획기적인 품질 개선이 이루어진 사물/얼굴 인식, 음성 인식, 음성 합성, 기계 번역, 자연어 분석 같은 분야 뿐만 아니라 개인화, 예측, 사기 탐지, 고객센터, 검색엔진, 코드 리뷰 등 비지니스에 직접적인 연관 및 성취를 올려줄 수 있는 AI 서비스들이 늘고 있다는 점도 큰 변화 중에 하나라고 볼 수 있습니다. 내년에 인공지능 분야에 도전하실 개발자라면 클라우드 기반 ML 서비스인 Amazon SageMaker를 추천합니다.
5. 프론트엔드 개발자의 손에 클라우드를
마지막으로 그동안 클라우드 기술의 변화에 가장 영향이 크지 않았던 직군인 프론트-엔드 개발자에게 서버리스(Serverless) 환경은 완전히 다른 개발 환경을 열어주고 있습니다. 서버리스 컴퓨팅이랑 개발자 입장에서는 서버 관리나 운영이 없이 코드만 배포하는 서비스 환경을 제공해 주는 거라서 기존의 기술적 자산만으로도 프론트-엔드 개발자도 손쉽게 풀스택 개발에 접근할 수 있도록 해줍니다. 기존에 Firebase를 사용해 보신 분이라면, 오픈소스 프레임워크인 AWS Amplify에 손쉽게 적응할 수 있습니다.
Amplify는 React Native 및 React, Ionic, Angular, Javascript, Vue 웹 애플리케이션을 포함하여 Android 및 iOS 모바일 애플리케이션을 AWS 클라우드 기반으로 손쉽게 개발 배포할 수 있습니다. 소셜 로그인 인증, GraphQL, 데이터 분석, 스토리지, Pub/Sub, 푸시 알림, 가상 현실 등 다양한 클라우드 백엔드를 간단한 코드로 구현 가능합니다. 클알못 프론트엔드 개발자라도 Amplify 실습 워크샵이나 동영상을 보시면 기본적인 사용 방법을 익힐 수 있습니다.
내년에 열리는 AWS한국사용자모임의 GraphQL 소모임 (1월 7일)이나 AWS Community Day 프론트엔드 트랙 (1월 21일)에 참석하셔도 도움을 받으실 수 있습니다.
지금까지 크게 5가지로 나눠 살펴 본 기술 변화는 백-엔드, 시스템 엔지니어링, 데브옵스, 데이터 사이언티스트 및 분석가, 프론트엔드 엔지니어까지 모든 영역에 거쳐 있습니다. 그만큼 클라우드가 미치는 영향이 매우 크다 할 수 있습니다. 아직 클라우드와 여러분의 개발 경력이 아직 별로 연관이 없다면, 내년 부터는 꼭 새로운 도전을 해보시길 바랍니다. 여러분 회사에 쓰는 스킬이 아니라면, 별도로 토이 프로젝트라도 시작해 보시면 어떨까요?
– Channy(윤석찬);