Stamp Pattern

글쓴이 상배 윤 날짜

EC2 인스턴스를 이용해서 서비스를 만드는 것은 생각만큼 쉬운일이 아니다. 운영체제가 설치되어 있는 건 다행이긴 하지만, 애플리케이션을 설치하고 설정을 적용하는 것은 운영체제를 설치하는 이상으로 많은 시간이 들어간다.

예전에는 chef로 이러한 일들을 해결했다. 호스트 이름으로 위치와 롤을 설정해서(예. nginx-proxy.message.product.priv 이면, 프러덕트 레벨에서의 message 서버를 위한 nginx-proxy 설정을 다운로드 해서 실행하라) 설정을 관리하기도 했다. 물론 이 방법은 지금도 여전히 사용하고 있다. 그때에 비하면 puppet, Ansible, capistrano 등 툴이 많아지긴 했지만 크게 달라진건 없다.

 “외부 저장소에서 설정파일과 코드를 읽어서 운영체제와 애플리케이션을 설정하고 자동으로 실행한다”라는 개념은 멋지기는 하지만, 이들 툴을 제대로 사용하는 건 생각 이상으로 복잡하다.

그래서 함께 사용했던 클라우드 패턴이 “Stamp Pattern”이다. Stamp Pattern을 사용하는 바탕이 되는 시각은 아래와 같다.

  • 가상머신과 운영체제, 애플리케이션을 전부 묶어서 하나의 패키지처럼 본다
  • AWS에서 서비스의 실행은 위의 패키지를 복사해서 실행하는 것 일 뿐이다.

이런 시각에서 본다면 가상머신과 기타 모든 소프트웨어와 설정을 패키지로 만든 다음, (Stamp로)찍어서 실행하는 것도 배포 방법 중 하나가 될 수 있다.

Chef같은 툴은 “형상을 코드로” 만드는 툴이다. 이 말은 형상을 완전히 이해하고 그것을 다시 코드로 만들어야 된다는 의미인데, 시스템 엔지니어에게도 개발자에게도 쉬운일이 아니다. 다음 단계로 넘어가기 전에 쓸 수 있는 방법이기도 하고, 그냥 이 방법으로 배포하는 것도 옵션이다.

AWS 에서의 적용 방법

AWS에서 EC2 인스턴스는 AMI(Amazon Machine Image)라고 하는 가상 머신 이미지로 부터 실행된다. AMI는 인스턴스의 루트볼륨 템플릿, 인스턴스의 실행을 가능하게 하는 AWS 계정 권한, 블록디바이스 매핑등과 같은 정보들 즉, 완전한 서버를 실행하기 위한 정보들을 가지고 있다.

그리고 사용자는 “실행 중인 EC2  인스턴스로 부터 AMI를 만들 수 있다”. 아래 그림을 보자.

Amazon에서 제공하는 AMI를 이용해서 EC2 인스턴스를 실행하고(마켓플레이스에 워드프레스 AMI가 있다는 사실은 그냥 넘어가자), Apache, PHP, WordPress 환경을 만들었다. RDS Mysql도 실행하고, 관련 설정들도 모두 끝낸다. 이후 워드프레스가 잘 실행되는 걸 확인했다면, 현재 돌아가고 있는 EC2 인스턴스로 부터 My WordPress AMI를 만든다. 이제 이 AMI로 부터 New EC2 Instacne를 실행하고 로드밸런서에 붙이면 애플리케이션 전개가 끝난다.

이렇게 만든 AMI는 또 다른 워드프레스 서비스를 구축할 때도 사용 할 수 있을 것이다. 이렇게 하려면 연동 데이터베이스 주소를 외부에서 주입해야 할테고, AWS는 이러한 툴을 제공한다.

  • EC2 인스턴스를 만들고 소프트웨어를 설치하고 설정을 한다.
  • 서버가 성공적으로 작동하는지를 확인한다.
  • 현재 작동 중인 인스턴스에서 AMI를 만든다
  • AMI로 부터 EC2 인스턴스를 만들어서 서비스한다.

장점

  • 해당 AMI로 부터 시작된 EC2 인스턴스는 패키지 처럼 작동한다. 복잡한 설정 없이 서버를 실행 할 수 있다.
  • 동일한 운영체제, 동일한 설정으로 수십/수백개의 인스턴스를 실행 할 수 있다.
  • 만들어 둔 AMI로 부터 실행한다고 하더라도 설정이 필요 할 수 있다. 이 경우에도 스크립트를 단순화 할 수 있다.
  • AMI를 공유 할 수 있다. AWS MarketPlace에서 이런 AMI들을 찾아볼 수 있다.

고민해야 할 부분

  • 새로운 스냅샷을 만들었다면, AMI도 새로 만들어서 배포해야 한다. AMI에 대한 버전관리가 필요하다.
  • AMI로 일괄 배포했는데, 개별 가상 서버의 설정을 변경해야 할 수도 있다. 이에 대한 해결 방안을 마련해야 한다.
  • AMI를 작성한 후에는 운영체제에 대한 패치등이 적용되지 않는다. 개별 AMI 별로 패치및 업그레이드를 해야 할 수도 있다.




댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

Bitnami