2 min to read
처음 겪은 마이그레이션 전략-intro
처음 있었던 서비스 인수인계, 도메인 URL을 활용해서 마이그레이션 작업을 수행하다
1. 아키텍쳐 파악
소스코드 및 전해들은 이야기로 파악한 아키텍쳐
서버
-
Api Server: api 서버는 같은 서버 스펙으로 이중화 해서 사용되었다 들었으며, 로드 벨런서의 라운드로빈방식으로 번갈아 요청이 오고 간다고 한다. stateless서버 이기 때문에 세션의 유지가 필요없으며 header에 해싱토큰이 오고간다. 또한 로드밸런서 셋팅 관련해서 api 서버가 죽어도 unhealthy State로 들어가게되면 로드벨런서가 뻗어버리고 다시 올리는데 약 1분~5분정도의 시간이 걸려 nginx를 두어서 항상 healthy상태로 쓴다고 한다.
-
Admin Server, WebServer, Scheduler, (Sphinx) : 관리자페이지, 소개페이지가 올라가 있으며 이 둘의 활용빈도가 높지 않기때문에 스핑크스(검색엔진)와 스케줄러를 서버에 두어 사용하고 있다. 검색엔진의 인덱싱은 매 시간마다 인덱싱하도록 /etc/crontab에 명령어가 돌도록 셋팅해놓았다. 관리자페이지 소개페이지가 같은서버에 있으며 포트도 둘다 80으로 접속가능하게 되어야 하므로 nginx를 가동시켜서 호스트네임으로 두 서버 프로그램으로 요청을 분리시킨다. 스케줄러는 많은 RAM을 차지 하진 않으나 비교적 높은 CPU를 차지하는 반면, Sphinx는 높은 RAM을 차지하는대신 낮은 CPU 점유율로 같이 사용하도록 만들었다고 한다.
-
SkTelink, Kakao BizTalk : Third Part회사의 서비스를 북딜 뿐만 아니라 기존에 쓰고 있던 타 서비스와의 연동을 위해 벼롣의 인스턴스로 빼 놓은 상태 Third Part회사에서 요구하는 **Agent 프로그램은 다른 인스턴스에서 다 함께 돌아가고 있다.
** Agent 프로그램: 이 프로그램은 Batch의 성격을 나타내고있으며, DB에 값을넣어 주면 배치프로그램이 DB에 값을 읽고 Third Part 회사의 API서버로 요청을 보낸다.(어떤곳은 소캣통신이기도 함), 프로그램 설치나 DB Schema는 Third Part회사에서 프로그램과 설치방법까지 가이드라인이 적힌 문서로 주며, 서비스 이용 계약이 체결되어야 그 회사의 Agent 프로그램을 받아올 수 있다.
-
S3 Bucket: HTTPS를 사용하고있다고 했었는데 소스코드를 사용해보니 HTTPS를 사용하고 있던건 아님.
-
Database: MariaDB사용, 하지만 마이그레이션 받을때에는 MySQL로 받을 예정.
클라이언트
- 안드로이드 : 자바 소스로 되어있으며, url은 서버 소스만 바라보고 있다. 나머지는 third party들은 api 키만 등록해서 쓰고있다.
- iOS : 자바 소스로 되어있으며, url은 서버 소스만 바라보고 있다. 나머지는 third party들은 api 키만 등록해서 쓰고있다.
- 웹, 어드민 웹: 일반 DOM객체를 사용하는 웹페이지이며 spring boot의 templates 또는 thymleaf를 쓴다.
Third party
- Firebase: 분석 및 API관리
- Google Analytics : 분석
- Facebook Event : 분석
- Google GCM : 푸쉬
- Apple APNS : 푸쉬
- SendBird : 챗팅
- Google Login : 로그인
- Facebook Login : 로그인
- Gabia DNS : Domain 주소
작업 순서[링크]
- 마이그레이션 인트로 Link
- 전해들은 정보들을 토대로 아키텍쳐 파악 Link
- 서드파티(facebook login, google analytics, firebase, playstore, android player… 등등.. 또는 sms, kakao BizMsg .. 등등 약 9개 정도 된 듯) 권한 및 계정 가져오기 Link
- 운영 서버 설계 Link
- 마이그레이션 전략 구상 Link
- 테스트 환경 구축 Link
- 마이그레이션 Link
- 운영 서버 배포 Link
- 후속작업… Link
Want to see something else added? Open an issue.
Comments