AWS와 GitLab, Hashicorp로 알아보는 HA 배포의 중요성

Jake Shin
Jake Shin | Full-Stack Engineer

고장나지 않는 서버는 사용자 경험과 안정적인 서비스 유지를 위해 필수 불가결한 요소입니다. 이번 시간에는 AWS에서 Terraform Cloud와 Hashicorp를 이용해 샘플 서비스의 고가용성 (HA) 서버를 구축하는 실습을 통해 HA가 왜 중요한지 알아봅니다. 또한 GitLab의 강력한 기능인 CI/CD 파이프라인을 활용해 배포 과정을 간단하게 구현하겠습니다.

photo | 인포그랩 GitLab | 인포그랩 GitLab

모든 과정은 워크샵에서 상세히 확인할 수 있습니다.

서비스 연결

AWS에서 GitLab, GitLab에서 Terraform, Terraform에서 Hashicorp 순서대로 레포지토리를 연동합니다. 이 과정이 지나고 배포가 완료되면 간편하게 최신화된 서비스를 배포할 수 있게 됩니다.

photo | 인포그랩 GitLab | 인포그랩 GitLab

자세한 과정은 워크샵 페이지의 Lab 2~3에서 확인하세요.

HA 없이 배포

먼저 HA 없이 배포를 시도합니다. 하나의 서버만으로 배포가 이루어지게 됩니다.

photo | 인포그랩 GitLab | 인포그랩 GitLab

Gremlin 공격으로 안정성 확인하기

Gremlin에서 방금 배포한 서비스를 타겟으로 shutdown 공격을 날립니다. 서버가 꺼지게 되고 하나의 서버만으로 서비스가 유지되고 있었으므로 더 이상 서비스를 이용할 수 없게 됩니다.

photo | 인포그랩 GitLab | 인포그랩 GitLab

자세한 과정은 워크샵 페이지의 Lab 4~5에서 확인하세요.

HA로 배포

HA 없이 배포한 서비스를 중지시키고 HA를 적용한 배포로 대체합니다. 여러 개의 EC2 서버가 이 서비스를 위해 사용됩니다.

Gremlin 공격으로 안정성 확인하기

다시 Gremlin에서 서비스를 공격해 한 개의 서버를 중지시킵니다. 하지만 이번에는 여러 개의 EC2 서버로 서비스를 유지하고 있기 때문에 한 개 서버가 중지되었음에도 서버에 이상이 전혀 없는 것처럼 서비스를 이용할 수 있습니다.

photo | 인포그랩 GitLab | 인포그랩 GitLab

자세한 과정은 워크샵 페이지의 Lab 6~8에서 확인하세요.

결론

이 실습을 통해 HA가 서비스의 이용에 있어서 얼마나 중요한지 느낄 수 있으실겁니다. HA가 적용된 서버는 문제가 생겼을 때 서비스의 중단을 걱정하지 않고 문제에 대응할 수 있기 때문에 훨씬 안정적이고 효율적인 위기 관리가 가능합니다. 또한 이 모든 과정에 GitLab CI/CD 파이프라인을 연동할 수 있으므로 DevOps 구축에도 편리함을 제공합니다.