처음 겪은 마이그레이션 전략-intro

처음 있었던 서비스 인수인계, 도메인 URL을 활용해서 마이그레이션 작업을 수행하다

Imagem de capa

Summary

회사에서 북딜이란 서비스를 샀다. 그럼과 동시에 북딜의 서버를 우리 회사의 인프라로 가져와야한다. 하지만, 북딜서버를 인스턴스 째로 가져오고 싶지만 해당 인스턴스 안에 보안관련한 api키들이 가득하니 그렇게 할 수는 없다고 한다.

즉 보안관련된 정보는 받아볼 수 없기때문에 직접 받아볼 수 있는것들은 소스코드뿐, 구술로 들은 아키텍쳐들의 내용..

이 포스팅의 마이그레이션 작업의 중요점것 바로

DNS를 활용하여 url을 교체하는 마이그레이션 작업.

상황

초기 인수인계 상황

  1. 인수인계를 우리측 경영자와 건내주는 CEO 둘이서 이야기를 하며 인수인계 절차를 밟고 있음
  2. 인수인계 해줄 개발자가 있지만 퇴사하고 다른 회사에 있는 상태
  3. 직접 작업해 줄 수 있는건 인수해오는 회사의 개발에 관련된 질의응답 그리고 요청

얻을 수 있는 리소스

  1. Android의 소스코드: 플래이 스토어에 배포되어있던 녀석이 아님]
  2. iOS의 소스코드: 다행히 앱 스토어에 배포되어있던 녀석]
  3. API Server: 소스코드속성에 대한 모든 설정값이 비어있음[protocol을 붙여야하는지, 어떤 형태의 값이 들어가는지 모름][shall script 코드를 짠걸로 실행하고 배포하는것 같았음][하지만 pm2가 더 나을꺼라 판단]
  4. Web Server: 소스코드(소개페이지이며, 서비스DB에 접근을 하지만 정말 인트로 소개페이지 뿐임)
  5. Web Admin Server: 소스코드(관리페이지이며, 라이브러리 의존성을 내가 해결하지 못해서 올리지 못하였다)
  6. Scheduler 소스코드: 소스코드(배치 프로그램이며, 통계의 결과 및 SMS, Email, SNS(kakatalk)의 푸쉬 및 알림서비스를 제공하는 용도)
  7. External API(kakaotalk): 소스코드(Third Party 회사와 연동하여 카카오톡의 알림톡을 보낼 수 있도록 하는 서버)
  8. 구두로 전해들은 아키텍쳐에 대한 내용…

위 모든 소스들의 설정값은 다 비어있다. 하지만 소스코드들을 살펴보고 주석에 조금씩 흔적들이 남아있었다.

작업 순서

  1. 마이그레이션 인트로 Link
  2. 전해들은 정보들을 토대로 아키텍쳐 파악 Link
  3. 서드파티(facebook login, google analytics, firebase, playstore, android player… 등등.. 또는 sms, kakao BizMsg .. 등등 약 9개 정도 된 듯) 권한 및 계정 가져오기 Link
  4. 운영 서버 설계 Link
  5. 마이그레이션 전략 구상 [포스팅 포기..]
  6. 테스트 환경 구축 [포스팅 포기..]
  7. 마이그레이션 [포스팅 포기..]
  8. 운영 서버 배포 [포스팅 포기..]
  9. 후속작업… [포스팅 포기..]

마이그레이션 전략이 다른 회사들은 어떻게 되는지 모르겠다.. 서적들이나 인터넷의 다른 자료들은 어떻게 마이그레이션을 진행하는지 모르겠지만 가능한 내가 처한 상황에서 가장 이상적인 방법으로 실천하려했다…. (결과는 성공적)..

문서는 이 순서대로 가며, 실제 작업 진행 또한 이러한 순서대로 했다.

2. 서드파티, 및 서비스 권한 획득

  1. Apple Store에 올라가 있는 서비스 양도 받기
  2. Play Store에 올라가 있는 서비스 양도 받기
    • 루트계정(어드민) 이것이 즉 개발자 계정임 이 계정으로 받아야 한다.
  3. 페이스북
    • 대쉬보드에 관리자 권한으로 부여할 사람 초대하고 부여한 사람이 나가면 양도 끝
  4. 구글 애널리틱스
    • 관리->사용자관리 에서 관리자 권한으로 부여할 사람 초대하고 부여한 사람이 나가면 양도 끝
  5. 파이어베이스, API dashboard(Google Login 및 GCM 포함)
    • 관리->사용자관리 에서 관리자 권한으로 부여할 사람 초대하고 부여한 사람이 나가면 양도
  6. 샌드버드
    • 고객지원과 통화하며 … api키를 그대로 쓰는 상태로 API의 권한을 받고싶다.. 라고 컨택해야함. 샌드버드 특성상 본사가 실리콘벨리에있어 작업 처리에 조금 늦는 감이 있다.
  7. SMS(SKTelink)
  8. Kakao Message(BizTalk)
    • 7번과 8번은 여러 서류가 필요한데…. 상담사분깨 대놓고 신입 커밍아웃했다. 상담사분이 뭐가 필요한지 알려주는데 하나도 못알아 들었다. 그래서 결국.

    “저 개발자이며 이 쪽 분야에 대해 하나도 모릅니다. 하지만 필요하신 문서가 뭔지 알려주시면 스스로 검색해서 찾아보도록 하겠습니다. 그 문서들은 어떻게 준비 하면 되나요?…..”

** 위 작업에 중요한 점: 안드로이드, iOS 배포를 새로 하지 않으려고 권한을 받으려고 하는것. 안드로이드, iOS 를 .. 새로 배포하게 될 경우… 이전에 바라보던 서버와, 새로 바라보는 서버. 두개를 켜야하는데.. 이전에 바라보던 서버를 제어하지 못하는 상황이므로.. 위 방법은 위험하고 여러 불편함을 감내 해야한다는 생각을 하게됨

** 7,8 항목에서 중요한 점: 이 두 서드파티 회사들은 2개의 장비에서 하나의 발급받은 ID를 사용하지 못하기 때문에 인수인계가 끝나자마자 이전에 사용하고 있던 장비(서버)가 접근을 하지 못하도록 Agent프로그램의 접근을 막아버린다.

즉.. 마이그레이션 작업 3일 남기고 두 서버가 제 기능을 못하고 죽어버리게 되었다.

이 사실을 전혀 인지하지 못하다가 고객 피드백을 받고서야 알았다.

정말 멘탈이 나가버리는줄 알았다.

4. 마이그레이션 전략