클라우드
클라우드는 보통 스토리지 저장소를 의미한다.
각각의 클라우드 업체들은 자체적으로 서버들을 가지고 있다.
여기에 모든 사용자들의 파일이 물리적으로 섞여 있는 상태로 저장된다.
클라우드 서비스를 사용한다는 것은 이런 인프라적인 부분을 신경 쓰지 않고 실제 서비스의 기능만 사용하겠다는 것을 의미한다.
클라우드를 딱 한마디로 정의하면 다른 회사의 서버를 빌려서 운영하는 것이다.
다른 회사가 모두에게 서버를 빌려줄 경우 : 퍼블릭 클라우드(Public Cloud)
다른 회사가 특정 조직에게만 서버를 빌려줄 경우: 프라이빗 클라우드(Private Cloud)
클라우드 특징
사용 요청 즉시 서버를 생성(Provisioning)
실제 사용한 시간 만큼만 비용 지불
클라우드: 현대 애플리케이션이 겪는 다양한 문제들을 클라우드 환경 구성을 통해 해결
1. 트래픽이 증가할 때 빠르게 대처할 수 있는가? (확장성, Scalability)
클라우드 환경에서는 서버 추가가 10분 내로 이루어진다.
온프레미스에서는 서버가 미리 준비되어 있지 않은 경우 새로운 서버를 증가하는데 오랜 시간이 소요된다.(주문, 배송, 설치 등)
2. 장애 발생 시 빠르게 복구할 수 있는가? (복원력, Resilience)
클라우드 환경에서는 백업 및 복구가 빠르게 이루어질 수 있다. (Disaster Recovery)
장애에 대응하기 위한 다양한 지역의 서버를 구축할 수 있다.
3. 운영 비용을 효율적으로 운영할 수 있는가?
사용한 만큼만 지불할 수 있기 때문에 운영 비용에 더 효율적이다.
위에서는 장점들만 얘기 했지만 당연히 단점들도 존재한다.
3번에서 비용을 효율적으로 운영할 수 있다 했지만 이런 부분은 전문가가 있는 경우 효율적으로 사용이 가능하지만 그러지 않은 경우 비용이 훨씬 비싸게 청구되는 케이스가 아주 많다. 그리고 단순히 해외 서버를 구성한다고 해서 재해복구나 해외 서비스가 바로 이루어지는 것도 아니다. 결국에는 서버를 구성하는 것은 이런 모든 과정의 시작점에 불과하다.
핵심은 클라우가 아닌 애플리케이션에 있다.
애플리케이션이 클라우드에 적합하지 않으면 클라우드를 사용하는 것은 크게 의미가 없을 수 있다.
클라우드 네이티브에 대한 개념은 여기서 출발했다.
클라우드: 복잡한 대형 애플리케이션이 겪는 다양한 문제들을 클라우드 환경 구성을 통해 해결
클라우드 네이티브 애플리케이션: 클라우드 환경을 더 잘 활용할 수 있는 애플리케이션 구조
- MSA
- 트래픽 증가에 빠르게 대처하기 위해선 애플리케이션이 MSA 구조로 개발되어야 합니다.
- 컨테이너 (Container)
- 컨테이너를 활용해 실행 환경에 종속되지 않는 동작이 보장되어야 합니다.
- 상태비저장 (Stateless)
- 애플리케이션 서버는 상태를 가지지 않아야 합니다.
- 상태를 가지지 않는 애플리케이션은 어디에나 즉시 배포될 수 있습니다.
- DevOps 및 CI/CD
- 배포가 자동화되어야 하고 빠르게 릴리즈가 수행되어야 합니다.
MSA
모놀리식
모든 기능을 하나의 애플리케이션에 구성
하나의 애플리케이션의 크기가 커지기 때문에 애플리케이션을 실행하는데 시간이 오래 걸리게 된다.
트래픽이 증가하는 경우 증가한 트래픽을 받을 수 있는 새로운 서버를 증가시켜야 하는데 서버의 실행 시간이 길어지면 그만큼 트래픽에 대처할 수 있는 능력도 떨어지게 된다. 그리고 하나의 애플리케이션이 크면 클수록 개발에 들어가는 빌드 시간이나 배포 시간이 오래 걸리게 된다. 그리고 실제 트래픽이 사용하는 기능이 주문 기능이라고 생각하면 이 애플리케이션 하나에는 실제로 증가가 필요하지 않은 결제나 상품 관리, 회원관리 같은 기능들도 포함되어 있기 때문에 서버를 한 대 늘릴 때마다 비효율적으로 리소스를 사용하게 된다.
MSA
도메인이나 기능별로 여러 개의 모듈로 분리해서 서버를 배포한다.
이 서버들은 각각 트래픽을 수용한다. 그래서 주문 트래픽이 늘어날 경우에는 주문 기능을 가진 모듈만 증가시키면 된다.
각각의 모듈이 크기가 작아졌기 때문에 개발도 간편해지고 서버를 스케일아웃 하는 시간도 빨라진다. 또한 모듈별로 완전히 독립되어 있기 때문에 각각의 모듈들이 서로 다른 언어를 사용해서 개발이 가능하다는 장점이 있다.
모놀리식 vs MSA
Leafy 애플리케이션 소개
참고
인프런의 개발자를 위한 쉬운 도커 강의를 보고 정리한 글입니다.
'Docker' 카테고리의 다른 글
7. 도커 볼륨 (0) | 2024.08.16 |
---|---|
6. 네트워크 (1) | 2024.08.15 |
4. 이미지 빌드 (0) | 2024.08.14 |
3. 이미지 레지스트리 (0) | 2024.06.29 |
2.이미지와 컨테이너 (0) | 2024.06.29 |