클라우드 네이티브의 정의
클라우드 네이티브를 설명하기에 앞서 과거의 어플리케이션 구축 방식을 살펴 보면, 차근차근 단계를 밟아나가는 워터폴 방식과 하나의 덩어리로 이루어지는 모노리식 구조와 온프레미스 방식으로 시스템을 구축해 왔다.
그러나 클라우드 시대가 도래함에 따라, 많은 시스템의 인프라가 클라우드를 전환이 되었다다. 이 때 주로 사용한 마이그레이션 방법이 리프트 앤 쉬프트 방식이다. 말 그대로, OS, 데이터, 애플리케이션을 그대로 클라우드로 옮기는 것을 의미한다. 이 방식은 어플리케이션 관점에서는 큰 변화가 없기 때문에, 클라우드가 제공하는 리소스 활용의 유연성과 확장성의 이점을 활용하는데는 한계가 있다.
그래서 나온 개념이 바로 클라우드 네이티브이다. 클라우드 네이티브란 클라우드가 제공하는 장점을 최대한 활용할 수 있도록 시스템을 구축하는 접근방식과 기술을 의미한다. 네이티브라는 단어처럼 어플리케이션 설계 단계부터 클라우드 고려한 개발 방법론과 아키텍쳐를 제안하며, 클라우드 환경에서의 지속적인 개발과 자동화된 관리 환경을 제공할 수 있는 여러 가지 기술들을 제시한다.
클라우드 네이티브 기술 핵심 요소 4가지
클라우드 네이티브 기술의 핵심 요소에는 크게 4가지가 있다.
첫 번째, DevOps
DevOps란 개발과 운영의 합성어로 두 역할 간의 협업을 바탕으로 소프트웨어를 빠르게 고품질로 개발 운영하기 위한 문화, 방식, 도구의 조합을 의미한다.
두 번째, CI/CD
DevOps를 실천하는 여러 도구들이 있는데 그 중에서도 DevOps의 핵심 요소인 자동화를 실현하는 기술이 바로 CI/CD 이다. CI/CD의 기본 개념은 지속적인 통합, 배포를 의미하는 것으로 애플리케이션 라이프 사이클 전체에 걸쳐 지속적인 자동화와 시각화, 프로세스 단순화가 핵심이다.
세 번째, MSA
마이크로 서비스 아키텍쳐는 업무 단위를 각각 독립적인 서비스로 구축하는 구조를 의미한다. 기존의 하나의 덩어리로 서비스간 결합도가 높은 모놀리식 시스템과는 달리 각각의 마이크로 서비스가 독립적으로 구축이 되고 배포되는 구조로 이루어져 있다. 따라서 고객의 요구와 기술적인 환경 변화에 빠르게 대응 가능하며 유연하게 시스템을 개발/운영할 수 있다.
네 번째, 컨테이너
MSA 애플리케이션은 수십에서 수백 개의 서비스로 이루어질 수 있고, 이렇게 만들어진 각각의 서비스는 컨테이너 기술을 통해 배포될 수 있다. 컨테이너란 인프라의 일관성을 유지하며 안전한 배포와 운영을 가능하게 해주는 기술로, 애플리케이션 실행에 필요한 라이브러리, 바이너리, 구성파일을 하나의 객체로 패키징하는 표준화된 방식을 제공한다. 따라서 어떤 인프라 환경에서든 동일하게 애플리케이션 실행이 보장된다. 높은 이식성과 경량화 특징을 가지고 있기 때문에, 클라우드 환경에서 MSA의 작은 서비스 단위를 실행하는데 있어서 많은 이점을 가진다.
'💻IT' 카테고리의 다른 글
[git] git 헷갈리는 부분 정리 (0) | 2023.04.23 |
---|---|
[Kotiln] No default constructor for entity (0) | 2023.03.27 |
[jqxGrid] cellsrenderer not working (callback function not called) (0) | 2022.01.27 |
[Jira][Agile] Initiative, Epic, Story, Task 차이 (1) | 2021.12.06 |
[Spring Boot][Error] Frontend에서 API 호출 시 CORS 문제 (0) | 2021.11.15 |