클라우드 네이티브란 무엇인가?

Chanmin, Kim·2022년 4월 21일
0
post-thumbnail

IT 서비스가 커져감에 따라 인프라의 민첩성, 확장성에 대한 수요가 점점 증가하게 되었고, 때맞춰 등장한 AWS나 컨테이너 등의 기술은 그 열쇠가 되었습니다.

이번 글에서는 클라우드 네이티브 기술이 무엇인지, 그리고 이를 도입했을 때 전통적인 인프라에 비해 어떤 이점을 가져갈 수 있는지 정리해보려 합니다.

클라우드 네이티브 (인프라)의 목표

소프트웨어 개발에서 인프라 란, 어플리케이션을 지탱하는 모든 하드웨어(Ex. 데이터 센터)와 소프트웨어(Ex. 운영체제, 배포 파이프라인)를 의미합니다.

"클라우드 네이티브" 라는 말이 꽤나 거창하고 두루뭉실하게 들릴 수도 있는데요, 마이크로소프트 공식 문서를 찾아보면 다음 구절을 찾아볼 수 있습니다.

이러한(= 클라우드) 기술을 사용하면 복원력, 관리 가능 및 관찰 가능한 느슨하게 결합된 시스템을 사용할 수 있습니다. 강력한 자동화(= 데브옵스)와 결합되어 엔지니어는 최소한의 수고로 자주 예측 가능하게 높은 영향을 미치는 변경을 할 수 있습니다.

즉 클라우드 네이티브 기술이란 단순히 AWS 등의 클라우드 기술을 의미하는 것이 아니라, 한발 더 나아가 마이크로서비스 / 클라우드 / 데브옵스 / 컨테이너 등 애자일한 개발 프로세스를 구성하는 기술들의 총칭임을 알 수 있습니다.

또한 클라우드 네이티브 기술은 MSA 형태로 느슨하게 구현한 어플리케이션을 클라우드 인프라 상에서 구현 & 운영함으로써 탄력성과 확장성이 뛰어난 어플리케이션을 구축하고자 하고, 복잡한 인프라 설정을 클라우드에 위임해 애자일한 개발 및 배포 프로세스를 구축하는 것을 목표로 한다고 이해할 수 있습니다.

클라우드 네이티브의 장점 1. 인프라의 확장성

클라우드 네이티브의 장점을 소개하기 위해 이를 구성하는 요소 중, 클라우드로 구성하는 인프라를 예로 들어 보겠습니다.

클라우드 기반 인프라와 이전의 전통적인 인프라(Ex. 전산실)의 가장 큰 차이는 바로 "소프트웨어적으로 인프라를 관리할 수 있는가" 입니다.

소프트웨어적으로 가상 인프라를 관리할 수 있다는 것은 가용성과 확장성이 뛰어난 인프라를 애자일하게 구성할 수 있다는 의미인데요, 한번 K 대학교에서 수강신청 서버 증설을 계획한다고 가정해 보겠습니다.

만약 클라우드를 도입하지 않는다면 K 대학교의 전산팀은 해당 기간동안 학생들이 얼마나 몰릴지 예측해야 하고, 구매할 서버(랙)를 결정해야 하고, 업체와 계약(또는 주문)을 해야 하고, 서버를 받아 물리적으로 설치해야 하고, 마지막으로 운영체제 등 소프트웨어적인 설정을 거쳐야 합니다.

하지만 만약 퍼블릭 클라우드의 일종인 AWS를 사용했다면 Auto Scaling Group 이라는 기능을 활용해 학생들이 얼마나 몰릴지 예측할 필요도 없이 가상 서버(인스턴스)를 수강신청 기간에만 추가로 대여한 다음, 수강신청 기간이 끝난 이후에 이를 곧바로 반납할 수 있습니다.

이처럼 소프트웨어적으로 가상 인프라를 구성하면 회사는 더이상 거대하고 비싼 서버를 주문하지 않아도 되고, 개발자들은 복잡한 인프라 설정이 아닌 주력 어플리케이션의 개발에만 집중할 수 있게 됩니다.

클라우드 네이티브의 장점 2. 코드 결합도 하락

이번에는 마이크로서비스를 적용했을 때의 장점입니다.

여러분이 새로 입사한 회사에서 이커머스 서비스를 운영 중이라고 가정하겠습니다.

이커머스 서비스에는 관리자용 백오피스, 장바구니, 결제, 사용자 마이페이지 등 다양한 파트들이 다른 모듈로 분리되어 있을 텐데요, 기존의 모놀리식 아키텍처에서는 모든 모듈들이 한 프로젝트에 결합되어 있기 때문에 다음 순서대로 배포가 이루어졌을 것입니다.

  1. 결제 모듈의 버그 수정
  2. 전체 모듈의 테스트 및 빌드 수행
  3. 배포

그런데 만약 결제 모듈에서 수정한 내용이 장바구니 모듈과 관련이 있는 부분이었다면 장바구니 모듈에서도 수정이 필요하고, 결국 모듈이 아닌 프로젝트 단위의 오류 진단이 필요하게 될 수도 있습니다.

마이크로서비스 아키텍처는 이커머스 서비스를 하나의 서비스로 보는 대신, 백오피스 / 장바구니 / 결제 / 마이페이지 모듈을 독립된 마이크로서비스 로 구현하고 이들을 느슨하게 결합해 하나의 완성된 이커머스 서비스를 운영할 수 있게 합니다.

✅ 마이크로서비스를 쉽게 관리하기 위해, 주로 컨테이너를 통해 실행하곤 한다고 합니다.

  1. 결제 모듈의 버그 수정
  2. 결제 모듈의 테스트 및 빌드 수행
  3. 결제 모듈의 이미지 배포 및 컨테이너 실행

이처럼 마이크로서비스 아키텍처를 활용하면 마이크로서비스간 느슨한 결합을 통해 보다 애자일한 테스트 ~ 빌드 ~ 배포가 가능해지고, 개발자들은 다른 모듈에서 사용된 변수나 함수를 헤집을 필요 없이 특정 마이크로서비스 개발에만 집중할 수 있게 됩니다.

결론

지금까지 클라우드 네이티브가 무엇인지, 그리고 클라우드 + 마이크로서비스 + 데브옵스가 비즈니스에 어떤 장점을 가져다줄 수 있을지를 알아보았는데요, 저 역시 이번 글을 쓰면서 클라우드와 마이크로서비스가 어떤 식으로 시너지를 일으킬 수 있을지 정리해볼 수 있는 기회가 되었던 것 같습니다.

감사합니다.


참고

profile
Public Cloud 및 Cloud Native 기술에 관심이 많습니다.

0개의 댓글