Cloud Native란
Cloud Native란
과거 On-Premise 구축 환경의 하드웨어 의존성에서 벗어나 클라우드 환경에서 효율적으로 개발 및 운영될 수 있는 환경을 말한다.
Native란 단어를 친화적인 이란 단어로 대체해서 해석해본다면 이해하기 편할 것이다.
Cloud Native를 구성하기 위한 Microservice Architecture, Containers, DevOps, CI/CD 4가지 요소가 존재한다.
Microservice Architecture
결제, 로그인, 길찾기 등 분리 가능한 컴포넌트를 하나의 서버에서 가동시키는 Monolithic 방식과는 다르게 각각의 기능을 분리하여 운영하는 방식이다.
이 때 중요한 것은 각 기능을 담당하는 서버 사이의 보안, 동시성, 시간 차, 데이터 전달 등이 문제가 될 수 있다.
Container
소프트웨어를 실행하는 데 사용되는 독립적인 실행 환경이다.
예를 들면, 하나의 건물이 있는데 여기에 공간을 분리해 중국집도 운영하고 사무실도 운영하고 전혀 관계 없는 회사 혹은 상가가 입점해 건물이라는 자원을 활용하는 것이라 볼 수 있다.
주로 같이 나오는 개념인 VM과 다른 점은 하드웨어 가상화 여부다. VM의 경우 CPU, 네트워크, 메모리, 저장 장치 등 하드웨어까지 가상으로 설정할 수 있다.
ex) 내 컴퓨터가 맥북 M3 칩이 들어가 있어서 인텔 계열의 명령어가 곧바로 실행될 수가 없어요 => VM 구동 후 하드웨어 가상화를 통해 i7 14700k로 변경 후 실행한다.
DevOps
애플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철학, 방식 및 도구의 조합이라고 한다.
정확한 범위와 정의는 잘 모르겠다. CI/CD, KPT 회고, 소나큐브, 에자일 개발 방법 등의 상위 카테고리인 거 같다.
CI/CD
Continuous Integration / Continuous Deployment
- CI : 지금까지 만든 기능 하나로 합쳐보자
- CD : 합쳐 놓은 거 서버에 올렸어?
위 과정에 대해 테스트, 빌드, 배포 자동화하는 것이 CI/CD의 역할이다.