CAFE24 웹 호스팅 AWS 클라우드 마이그레이션

CAFE24 웹 호스팅 AWS 클라우드로 마이그레이션한 경험을 바탕으로 기록합니다.

cafe24 웹 호스팅 3대 서버를 프리랜서와 함께 AWS 클라우드로 이관했습니다. 약 2 ~ 30개 정도 서비스가 있었습니다.

클라우드로 변경한 이유는 크게 2가지로 생각했습니다.

첫째, 회사 3대 서버가 모두 물리적으로 다른 위치에 있어 네트워크 이슈가 있었습니다. 각 서버 통신을 위해 외부 트래픽 비용과 오래된 인프라 작업에 문제들이 있었습니다.

둘째, 개발을 위한 서버 환경이 너무 오래되어 힘들었습니다. 특히 개발 언어 업그레이드 등 다양한 이슈, 테스트와 운영 서버 사용이 힘들었습니다. 이런 어려움은 신규 개발과 기존 레거시 시스템 작업의 생산성이 떨어졌습니다. 생산성이 떨어지는 개발 코드를 지속적으로 유지보수하는 것이 불편했습니다. 여러 문제점을 겪으면서 서버 이관을 생각하게 되었습니다.

사실 눈에 보이는 부분은 잘 돌아가고 있어 서버 이관 후 문제 발생에 대한 걱정이 많았습니다.

서버 이관 후 네트워크 이슈는 모두 사라졌고 개발 서버 환경 세팅도 테스트 쉽고 빠르게 진행하고 있습니다. 업그레이드 된 후 생산성이는 개발을 위해 현재까지 노력하고 있습니다.

그럼 제가 경험한 내용을 공유해보겠습니다. 여러분들이 작은 서비스 규모를 이관한다면 아래 내용을 확인하고 준비하시면 많은 도움이 될 것입니다.

CAFE24 웹 서버 분석/AWS 서버 세팅

처음 현재 서비스 되고 있는 것을 파악해야합니다.

  • 웹 서비스에 사용하는 언어 버전
  • DB 버전
  • 서비스에 필요한 계정
  • 서드 파티 정보
  • 외부 연결된 아이피
  • 기타

초기 위 내용으로 서비스를 파악했습니다.

기존 서버 환경 분석

각 서비스 별 환경 분석을 진행하고 AWS EC2 서비스에 설치를 진행했습니다.

프로그램 언어는 레거시 PHP5와 PHP7등 서비스가 되어있어 5 버전을 올려서 테스트를 돌렸습니다. 그러나 업그레이드 하기 위해 많은 코드를 다시 수정해야하기 때문에 5버전은 현상태를 유지하게 되었습니다.
나머지 7버전 8 버전으로 업그레이드를 진행하고 DB도 업그레이드 했습니다. DB 상위 업그레이드 되면서 패스워드 암호화 방식이 바뀌어 PHP 코드도 수정했습니다.

DB 계정 생성과 백업 프로그램 코드 모두 AWS로 옮기고 웹 서비스 하나씩 하나씩 테스트를 진행했습니다. 문제가 발생 되는 부분은 수정하며 테스트를 진행했습니다.

테스트 하는 과정에서 테스트 PC 한대는 모든 도메인 정보를 신규 생성된 AWS IP에 접속되도록 로컬 호스트 파일에 등록했습니다.

거의 한달 동안 테스트 진행 후 서버 마이그레이션을 실행하기로 했습니다. 작업 시간은 새벽에 진행되었습니다.

몇 번의 시뮬레이션을 통해 대략 작업 시간을 파악했기 때문에 큰 이슈 없이 마이그레이션 되었습니다.

기존 서버 서비스를 중단하고 DB 백업과 복원 시간이 가장 오래 걸렸습니다.
코드나 서비스 파일들은 지속적으로 rsync 명령어를 이용하여 주기적으로 데이터 동기화를 했습니다. 짧은 시간에 코드는 복사가 되었습니다.

DNS 이슈를 줄이기 위해 서버 마이그레이션 몇 일 전부터 도메인 DNS 설정에 TTL 시간을 줄였습니다. 그래도 DNS 이슈는 발생 되었지만 시간이 지나 해결 되었습니다. 중요한 서비스는 기존 서비스로 접속시 강제로 새로운 웹 사이트로 접속 되도록 처리도 했습니다.

서비스 오픈

새벽 시간이 어느덧 흐르고 아침에 서비스 오픈을 진행했습니다. 새벽에 접속하는 고객분들이 거의 없는 서비스라 마이그레이션 진행을 원활하게 할 수 있었습니다. 그러나 아침에 하나 둘씩 직원들이 업무를 진행하며 이슈들이 발생 되었습니다.

DNS 캐시로 신규 서비스에 접속 되지 않는 문제 가장 많았고 다른 문제들은 하나씩 코드를 수정하며 최종 서비스가 오픈 되었습니다. 오래된 레거시 시스템을 옮겨야하는 부담감이 많이 있었지만 꼭 해야되는 일이였습니다.
레거시 시스템 환경에서 작업하는 개발자의 생산성과 피로가 지속적으로 커지고 있었습니다. 팀에 개발자도 늘어나고 운영과 신규 서비스 모든 것이 쉽지 않았습니다.

앞으로 가야할 길이 아직 많이 남아있지만 안정적인 서비스와 생산성을 높이기 위해 지속적으로 학습하고 경험하고 적용해보려고 합니다.

AWS 구성

AWS 서비스에 사용한 것은 ELB, S3, Route53, CloudFront, ACM, EFS, EC2 5대 등 간단하게 작업했습니다.

각 구성별 사용 방법은 제 블로그에 기록 지속적으로 기록할 예정입니다.

느낌

개발자로 프로그램 코드만 경험 했었습니다. 이번 기회로 전체적인 시스템을 옮기는 과정에서 다양한 경험을 했습니다. 아무래도 경험이 없고 처음이라 두렵고 겁이 났지만 꼭 해야하는 일이라 생각했습니다. 지금 생각하면 정말 잘 했다고 생각됩니다.

서버를 직접 관리하는 것은 처음 접한 분들은 낯설고 어려워 보일 수 있습니다. 저도 그랬습니다. 서버 지식과 경험이 초보였기 때문에 시간과 두려움이 느껴졌습니다.
잘 돌아가는 서비스가 혹시 잘 못 되고 시간만 낭비하는 것은 아닌 그러나 AWS 구축을 몇 번 실행하다 보니 제가 하는 부분에서는 어느새 익숙해졌습니다. 처음에 자료를 찾고 테스트하는 시간이 많이 줄었습니다.

간단한 AWS의 인프라 작업과 개발 모든 것을 직접 할 수 있기 때문에 주위 아는 지인분들이 프로젝트 의뢰를 자주 하고 도움을 주고 있습니다. 그때 시도할 용기가 없었다면 지금의 경험을 절대 얻을 수 없었습니다.

현재 간단한 인프라 구축만 되었지만 서비스 운영에 필요한 AWS 여러 기능들을 추가적으로 학습하고 적용하며 지식을 더 넓게 만들기 위해 노력중입니다.

개발만 하는 분들에게 AWS로 직접 서버 구축 후 사이트 프로젝트를 만들어 보는 것을 적극적으로 추천합니다.

아래는 AWS 서버 설치 과정입니다.
AWS EC2 Nginx 웹 서버 설치하기
AWS EC2 PHP & Mariadb 설치하기

AWS 학습은 유튜브 AWS 강의실로 많은 부분을 알 수 있게 되었습니다.

Leave a Comment