DevOps, 클라우드 아키텍트, IaaS, PaaS, SaaS
지난 포스팅에서 클라우드가 무엇인지 알아보았죠.
클라우드는 네트워크를 통해 제공되는 컴퓨팅 자원으로, 인터넷만 있다면 언제 어디서나 접근할 수 있는 기술입니다.
그렇다면, 클라우드 컴퓨팅이란 무엇일까요?
클라우드 컴퓨팅은 컴퓨팅 자원을 네트워크를 통해 빌려 쓰면서 개발과 운영을 하는 방식을 말합니다.
이번 포스팅에서는 클라우드 컴퓨팅이 개발 환경에 가져온 변화에 대해 알아보겠습니다.
지난 영상에서 클라우드의 장점은 유연성, 비용절감, 글로벌 접근성이라고 말씀드렸습니다.
클라우드 컴퓨팅을 활용한 개발의 형태는 이 세가지 장점을 잘 활용하는 방식으로 변화해왔다고 생각하면 쉽습니다.
과거에는 서버 관리를 운영자가 전담했고, 개발자는 기능 구현과 코드 작성에만 집중했습니다.
하지만 클라우드 환경이 도입되면서 서버 설정과 관리가 자동화되고, 필요한 자원을 유연하게 사용할 수 있는 서비스들이 등장했습니다.
이 변화로 DevOps 엔지니어라는 직군이 생겨났고, 개발과 운영의 경계가 점점 모호해졌습니다.
DevOps 엔지니어는 유연성을 확보하기 위해 다음과 같은 역할을 수행합니다.
코드를 작성하면 자동으로 오류를 테스트하고, 문제가 없으면 사용자에게 즉시 배포하는 과정입니다.
이를 통해 소프트웨어를 더 빠르고 안정적으로 업데이트할 수 있습니다.
서버를 직접 관리하지 않고, 클라우드 제공자가 자동으로 관리하는 환경입니다.
개발자는 코드 작성에만 집중할 수 있습니다.
서버와 네트워크 설정을 코드로 작성해 관리합니다.
코드 실행만으로 필요한 서버를 자동으로 생성하고 설정할 수 있습니다.
이처럼 클라우드의 유연성은 개발 환경을 크게 바꿔 놓았습니다.
클라우드는 컴퓨팅 자원을 확보하기 위한 초기 비용과 인프라 관리 비용을 줄여줍니다.
하지만, 클라우드 사용이 늘어나면서 비용 최적화의 중요성도 함께 커지고 있습니다.
AWS, GCP, Azure와 같은 다양한 클라우드 제공업체는 수백 가지 서비스를 제공하며 과금 방식도 다릅니다.
잘못된 선택으로 인해 예상보다 높은 비용이 발생할 수 있죠.
불필요한 자원을 과도하게 사용하거나 데이터 전송 비용을 간과하는 경우, 비용이 크게 증가합니다.
이 문제를 해결하기 위해 클라우드 아키텍트가 등장했습니다.
클라우드 아키텍트는 비용 절감을 위해 다음과 같은 일을 합니다.
서비스에 맞는 적합한 자원과 리전을 선택합니다.
불필요한 스토리지 비용을 줄이고, 예약 인스턴스와 할인 요금제를 활용합니다.
트래픽 패턴에 맞춰 오토 스케일링을 설정해 자원을 효율적으로 관리합니다.
효율적인 클라우드 아키텍처 설계는 비용을 절감하고 성능을 최적화하는 핵심 요소입니다.
클라우드는 전 세계 어디서나 데이터를 저장하고 접근할 수 있도록 돕습니다.
이를 위해 클라우드 아키텍트는 글로벌 인프라와 서비스 가용성을 관리하며, 다음과 같은 요소를 고려합니다.
사용자와 가까운 리전에서 데이터를 제공해 지연 시간을 최소화합니다.
네트워크 경로를 최적화하고, 데이터 센터 간 동기화를 통해 안정성을 확보합니다.
데이터 센터 장애에 대비해 리전 페일오버 기능을 설정합니다.
재난 상황에서도 데이터를 복구할 수 있도록 다중 리전에 데이터를 복제하고 백업을 관리합니다.
각 국가의 데이터 보호 법규를 준수하며, 데이터 저장 리전을 신중히 선택합니다.
클라우드 서비스는 IaaS, PaaS, SaaS 세 가지 모델로 나뉩니다.
이를 일상적인 음식 준비 과정에 비유하면 다음과 같습니다.
마트에서 재료를 사와 직접 요리하는 것과 같습니다.
서버, 스토리지, 네트워크 등 기본 자원을 제공받아 사용자가 직접 관리합니다.
반조리 식품처럼, 인프라뿐 아니라 개발에 필요한 환경까지 제공됩니다.
개발자는 애플리케이션 코드만 작성하면 됩니다.
완성된 배달음식과 같습니다.
소프트웨어를 설치하거나 관리할 필요 없이 바로 사용할 수 있습니다.
https://youtu.be/tL53cUzkMGE?si=Xvfih3LXyYM7PfsC