클라우드 네이티브 소개



최근 인공지능, IoT, 5G 등 첨단 IT 기술이 발전하면서 데이터의 양이 빠르게 증가하고 있습니다. 이러한 빅데이터를 다루기 위해서는 이를 저장하고 처리할 수 있는 넉넉한 IT 자원이 필요합니다. 하지만 이를 일반 기업에서 구축하기에는 비용 등의 문제가 많이 발생합니다. 이런 문제를 해결하기 위해 많은 기업이 직접 데이터 센터를 구축하기보다 클라우드를 도입하기를 희망하고 있습니다.

오늘 블로그는 클라우드 환경을 최대한 활용할 수 있도록 애플리케이션을 구축 및 실행하는 방법인 클라우드 네이티브에 대하여 소개하고자 합니다.




기존의 온프레미스 환경과 클라우드 환경은 달라서 애플리케이션을 구축하는 방법을 변경할 필요가 있습니다. 이때 클라우드 환경을 최대한 활용할 수 있도록 애플리케이션을 구축 및 실행하는 방법을 클라우드 네이티브라고 합니다. 즉, 클라우드 네이티브는 클라우드 컴퓨팅에 최적화된 애플리케이션을 개발하기 위한 방법입니다.

클라우드 컴퓨팅 환경의 가장 큰 장점은 민첩성과 확장성입니다. 기존의 온프레미스 환경에서 시스템을 확장하기 위해서는 직접 물리적인 장비 구매와 설치 등의 활동을 해야 하므로 큰 비용과 시간이 들었다면, 클라우드 환경에서는 단지 몇 가지 설정하는 것만으로 빠르게 시스템을 확장할 수 있습니다. 이러한 특징에 의해 클라우드 환경은 온프레미스 환경보다 시스템 변경이 자유롭습니다.

그러나 클라우드 환경 내에서 실행되는 애플리케이션이 기존의 온프레미스 환경에서 사용되는 전통적인 방법으로 개발되었다면, 시스템이 변경될 때마다 애플리케이션의 소스코드나 설정 등을 직접 변경해야 할 것입니다. 클라우드 환경 특성상 시스템의 스펙이 자주 변경될 수 있는데 애플리케이션이 이를 민첩하게 대응하지 못한다면 클라우드 환경의 장점을 제대로 활용하지 못하는 것입니다. 따라서 클라우드 환경을 제대로 활용하기 위해서는 애플리케이션 또한 클라우드 환경에 맞게 개발해야 하는데 이때 사용되는 방법이 클라우드 네이티브입니다.





[Fig. 1] CNCF
CNCF(Cloud Native Computing Foundation)에서 제시하는 클라우드 네이티브 참조 아키텍처에 따르면 클라우드 네이티브한 애플리케이션을 개발하기 위해서는 크게 네 가지 주요 기술이 필요합니다.

[Fig. 2] 대표적인 컨테이너 기술 구현체인 Docker
[Fig. 3] 대표적인 컨테이너 오케스트레이션 기술 구현체인 Kubernetes
(https://kubernetes.io)

첫 번째는 컨테이너 기술입니다. 가상화 기술의 일종으로 이를 활용하면 애플리케이션을 구동 환경까지 가상화하여 패키징 할 수 있습니다. 이를 통해 구동 환경의 일관성을 유지할 수 있으므로 애플리케이션을 안전하게 배포하고 운영할 수 있습니다. 컨테이너 오케스트레이션 기술과 함께 사용하면 컨테이너 배포 및 확장 등을 자동화할 수 있습니다.

[Fig. 4] MSA
(https://www.nginx.com)

두 번째는 MSA(Micro Service Architecture)입니다. 기존의 모놀리틱한 서비스를 여러 마이크로 서비스 블록으로 나누고 RESTful API 등을 통해 서로 상호 작용하도록 구성하는 방법입니다. MSA를 활용하여 서비스를 구축하면 서비스의 복잡도가 감소하고 확장성과 재사용성이 증가합니다.

[Fig. 5] DevOps
(https://www.nginx.com)

세 번째는 DevOps입니다. DevOps는 개발(Development)과 운영(Operations)의 합성어로서, 애플리케이션을 빠른 시간에 개발 및 배포하고 운영하기 위한 방법이자 조직 문화라고 할 수 있습니다. DevOps를 통해 개발 조직, 운영 조직, 품질 조직들은 공동의 목표를 설정하고 이를 달성하기 위한 자동화된 도구 및 시각화된 지표를 활용하여 목표를 달성합니다.

[Fig. 6] CI/CD
(https://www.nginx.com)

네 번째는 CI/CD입니다. 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더 짧은 주기로 고객에게 제공하는 방법입니다. CI/CD는 각각 지속적인 통합(Continuous Integration)과 지속적인 배포(Continuous Delivery)를 뜻합니다. 새로운 코드 통합과 테스트 및 배포에 이르는 애플리케이션 개발 프로세스를 자동화하고 모니터링하는 것이 목표입니다.




위에 언급한 기술들을 적절히 활용한다면 서비스를 여러 애플리케이션으로 분산할 수 있고, 각각의 애플리케이션을 유연하고 민첩하게 배포 및 확장할 수 있게 되므로 클라우드 컴퓨팅 환경을 제대로 활용할 수 있게 됩니다. 이 밖에 더 깊은 내용으로는 12-factors, Cloud Native Landscape 등이 있습니다.

최근 국내외 기업들의 클라우드 전환이 가속화되고 있습니다. IDC(International Data Corporation)에 따르면, 2025년에는 90%의 애플리케이션이 클라우드 네이티브로 구동된다고 합니다. 즉, 클라우드 컴퓨팅이 대세를 넘어 필수가 되어가고 있다는 것입니다. 이를 대비하기 위해서는 클라우드 네이티브 기술의 확보는 선택이 아닌 필수라고 생각됩니다.





작성 : 대전지사 신동훈 개발자

Posted by 人Co

2021/01/17 16:48 2021/01/17 16:48
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/369

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다



« Previous : 1 : ... 5 : 6 : 7 : 8 : 9 : 10 : 11 : 12 : 13 : ... 51 : Next »