클라우드 전환 관련해 대기업부터 스타트업까지 모두가 가는 여정이 하나 있습니다. 바로 아키텍처의 전환인데요.
기업에서 운영하는 시스템 중 상당 수는 과거에 구현한 모노리식 아키텍처 기반입니다. 스타트업의 경우도 처음에 모노리식 방식으로 서비스를 구현하는 경우가 많습니다.
그렇기에 모든 기업에서 클라우드 전환의 최종 목표를 ‘Cloud Native’로 삼으며, 목적지에 도달하기 위해 마이크서비스 아키텍처(MSA)로의 점진적인 전환을 합니다.
👍 서버리스 컴퓨팅의 장점
이 과정에서 많은 조직이 고민하는 것이 바로 서버리스 컴퓨팅(serverless computing)입니다. 특히 디지털 전환 전략을 앞세워 각종 시스템 및 서비스 개발을 늘리는 조직의 경우 인프라 관리의 부담을 더는 동시에 신뢰할 수 있는 SRE(Site Reliability Engineering), DevOps 체계 아래에서 더 빠르고 효율적인 개발과 배포를 지원하기 위해 서버리스 도입에 관심을 갖게 됩니다. 서버리스를 기반으로 마이크로서비스 아키텍처의 그림을 그려 나가면 다음과 같은 효과를 거둘 수 있습니다.
- 개발 시간 단축: 서버리스 컴퓨팅 환경은 개발자가 서버를 관리할 필요 없이 애플리케이션을 개발하고 배포할 수 있도록 지원합니다. 따라서, 개발 시간은 단축되고, 애플리케이션을 출시하는 속도는 빨라집니다.
- 비용 절감: 서버리스 컴퓨팅 환경은 개발자가 서버를 관리할 필요가 없기 때문에, 서버 관리 비용을 절감할 수 있습니다. 또한, 서버리스 컴퓨팅 환경은 애플리케이션의 사용량에 따라 비용이 부과되기 때문에, 비용 효율적입니다.
- 확장성 향상: 서버리스 컴퓨팅 환경은 애플리케이션의 사용량에 따라 자동으로 서버를 확장하거나 축소합니다. 따라서, 애플리케이션의 성능은 안정적으로 유지되며, 비용은 효율적으로 관리됩니다.
- 탄력성 강화: 서버리스 컴퓨팅 환경은 애플리케이션의 일부가 중단되더라도 애플리케이션의 전체적인 성능은 유지됩니다. 따라서, 애플리케이션은 안정적이고, 신뢰할 수 있습니다. SRE 전담 조직과 노하우가 없어도 빅테크 못지 않은 탄력성을 확보할 수 있습니다.
🤷♂️ 서버리스 환경에서 CI/CD
DevOps의 근간은 바로 CI/CD 파이프라인입니다. 서버리스 환경에서 마이크로 서비스를 개발하고 배포하는 경우 서비스의 성장, 개발 조직의 확대 등 여러 요인으로 인해 작업의 복잡도가 높아집니다. 이것이 바로 CI/CD 파이프라인의 존재 이유입니다.
팀 멤버가 늘고, 개발해 배포하는 단위 서비스가 많아져 관리해야 할 변경 사항이 많아져도 CI/CD가 탄탄히 자리를 잡으면 복잡해진 프로세스는 문제가 되지 않습니다. 구글 클라우드는 서버리스 환경에서 누구나 간편하게 CI/CD 파이프라인을 구축할 수 있는 서비스와 기능을 포괄적으로 제공합니다. 간단히 예를 하나 들어 보겠습니다. 요즘 깃허브(Github) 많이 쓰시죠. GitHub, Cloud Build, Cloud Run 조합으로 서버리스 환경에서 CI/CD가 어떻게 동작하는 지 간단히 알아보겠습니다.
깃허브에 코드를 저장할 리포(Repository)가 있다고 가정하겠습니다. 이 경우 구글 클라우드에 컨테이너 이미지 저장소를 마련하면 CI/CD를 위한 기본 준비를 마칠 수 있습니다. 구글 클라우드는 Artifact Registry를 사용하여 컨테이너 이미지를 저장합니다. 참고로 여기서 말하는 아티팩트란 패키지, 라이브러리, 컨테이너 이미지 등을 뜻하는 개념입니다.
코드 저장소와 컨테이너 이미지 저장소가 준비되었다면 다음에 할 일은 깃허브 리포를 구글 클라우드의 Cloud Build에 연결하는 것입니다. Cloud Build 설정 화면에서 코드 저장소로 깃허브를 선택한 다음 깃허브 자격 증명을 확인하게 설정하면 됩니다. 다음에 트리거를 생성해 CI/CD 파이프라인을 시작하게 하면 됩니다. 이렇게 하면 깃허브 메인 브랜치에 푸시할 때마다 CI/CD 파이프라인이 트리거됩니다.
빌드 단계에 대한 설정은 Cloud Build Configuration 파일을 통해 하면 됩니다. 이 파일을 통해 빌드 단계를 정하면 됩니다. Cloud Build에 Docker Build를 실행하라고 정의하는 것이라 보면 됩니다. 이제 남은 것은 Cloud Run을 활용해 배포 과정을 자동화하는 것입니다.
앞서 소개한 간단한 설정만 하면 깃허드에 코드를 커밋하고 푸시하면 그 이후 빌드와 배포 작업이 Cloud Build와 Cloud Run을 통해 이루어집니다. 조금 풀어 설명하자면 Cloud Build는 코드 변경 사항을 자동으로 빌드하고, 코드를 저장하고 관리하고, 코드를 테스트하는 CI 과정을 제어합니다. 그리고 Cloud Run은 코드를 배포하고, 코드 성능을 모니터링하고, 로그를 수집하는 등의 CD 프로세스를 컨트롤합니다.
이쯤에서 카나리아 릴리즈 배포가 궁금할 것입니다. 카나리아 릴리즈의 중요성은 뭐 따로 설명할 필요가 없죠. 카나리아 릴리즈를 사용하면 새로운 기능이나 변경 사항이 사용자에게 미치는 영향을 모니터링하고, 문제를 빠르게 식별하고 해결할 수 있습니다. 그리고 새로운 기능이나 변경 사항을 소수의 사용자에게 먼저 배포하고, 문제가 발생하지 않으면 전체 사용자에게 배포할 수 있어 안정적인 서비스 제공에 만전을 기할 수 있습니다. 이외에도 카나리아 릴리즈를 사용하면 새로운 기능이나 변경 사항을 사용한 사용자의 피드백을 수집하고, 피드백을 반영하여 새로운 기능이나 변경 사항을 개선할 수 있습니다. Cloud Run을 사용하면 콘솔에서 카나리아 릴리즈를 모니터링하고 로그를 볼 수 있습니다.
🔥가장 중요한 자산은 결국 ‘사람과 시간’
이제 정리를 해볼까요. CI/CD 파이프라인은 코드의 빌드, 테스트, 배포를 자동화하는 프로세스입니다. CI/CD 파이프라인을 사용하면 개발자는 코드의 빌드, 테스트, 배포에 소요되는 시간을 줄일 수 있습니다. 따라서 개발자는 코드의 품질을 향상시키고, 새로운 기능을 개발하는 데 더 많은 시간을 할애할 수 있습니다.
일반 기업과 스타트업 모두 IT 관련 가장 중요한 자산은? 아마 사람과 시간일 것입니다. 서버리스 컴퓨팅과 CI/CD는 사람과 시간이란 핵심 자산의 가치를 높이는 확실한 방법이라 할 수 있습니다.
더 자세한 사항이 궁금하시면 메가존소프트가 도움을 드리겠습니다. 👉 메가존소프트 문의 바로가기