중요한 건 꺾이지 않는 테스트: 카카오페이 지라 마이그레이션 되돌아보기

중요한 건 꺾이지 않는 테스트: 카카오페이 지라 마이그레이션 되돌아보기

시작하며

안녕하세요. 카카오페이 기술전략팀 안드레아스입니다. 작년 6월 말 입사하자마자 전사 및 팀 온보딩 이후 바로 지라 마이그레이션 업무에 투입되었습니다. 지라를 이용한 프로젝트 관리, 기타 Plug-in 기능 사용 등은 친숙하였지만, 이렇게 직접적인 마이그레이션 경험은 거의 없었습니다. 지라 관리 및 이용 이외 작업들은 대부분 협력업체 도움을 받아 진행했습니다.

이번처럼 기존에 사용하던 지라 시스템에서 원하는 과제들만 뽑아 새로운 시스템을 구축하는 업무는 처음이었습니다. 입사 후 처음 배정받은 업무이거니와 해당 업무 관련 경험이 없었습니다. 나름 정보를 찾고, 계획을 세우고, 실행하기까지 준비를 많이 하였습니다. 특히 어려웠던 점은 카카오 지라 정보를 얻기 위해 매번 카카오 측과 협의해야 하는 상황이었습니다. 카카오 측 도움이 반드시 필요했습니다. 이번 지라 마이그레이션 진행 과정과 어려웠던 점 및 배운 점을 말해볼까 합니다.

계획이 반이다

지라 관리자로서 지라 사용, 환경, 구조 등은 잘 알고 있었지만, 마이그레이션에 대한 특별한 경험은 없었습니다. 특히 전체 지라 프로젝트 중에서 일부 프로젝트만 추출하여 새로운 환경을 만드는 작업을 해보진 않았지만, ‘뭐 어렵겠어?‘라는 판단을 했었습니다. 이런 생각은 꼭 기대를 저버리지 않다는 걸 알게 되었습니다. 역시 세상에 쉬운 건 없습니다. 이제 시작은 했으니 계획을 세우고, 정보를 수집하고, 협력업체(오픈소스컨설팅, 지라 및 위키 유지보수업체)와 미팅하며 나름대로 작업을 준비하였습니다.

특히, 협력업체와 마이그레이션 진행 방법을 논의하면서 협력업체도 우리와 같은 환경에서의 마이그레이션 경험이 없다는 걸 알게 되었습니다. 사실상 기대했던 협력업체의 지원을 받기 어려웠던 것이죠. 아…😨😰😱 이때부터인가 점점 먹구름이 몰려오고 있었습니다. 💨⛈

테스트 마이그레이션 시작이다

막상 혼자 진행하려고 하니 마이그레이션 관련 정보도 많이 부족하고, 어떤 환경에서 어떤 오류가 발생할지 등 예측하기가 무척 어려웠습니다. 그래서 바로 마이그레이션을 진행 하기보다는 일부라도 테스트 환경에서 발생되는 오류 및 진행 과정에서 문제점, 해결책 등을 찾아보기로 하였습니다. 테스트를 하면서 마이그레이션 수행 시간, 각종 오류 및 해결 방법, 카카오 지원 요청 등 많은 부분에서 확인할 수 있었습니다. 테스트 환경에서 테스트를 먼저 하기로 한 결정은 지나고 보니 가장 현명한 판단이었다고 생각합니다.

마이그레이션 방법을 찾아본 결과 두 가지 방향으로 결정이 났습니다. 첫 번째는 Import 받는 서버의 지라 관리자 권한을 획득하여 전체 데이터를 백업하고 다시 복원하는 방법입니다. 해당 방법은 공동체 모든 지라를 옮긴 후 페이와 상관없는 과제는 삭제하는 형태로 진행해야 합니다. 페이 지라와 상관있는 데이터들이 포함되어 있기 때문에 결론적으로 보안상 거의 불가능한 방법이었습니다.

두 번째는 지라의 마이그레이션을 지원하는 Plug-in을 구매하여 수행하는 것입니다. 결국 라이선스를 구매해야 하는 절차가 필요했으며, 해당 Plug-in이 얼마나 완벽하게 지원할지는 테스트가 필요했습니다. 카카오와 협의한 끝에 두 번째 방법으로 결정했습니다. 바로 구매 요청을 진행하였고 해당 Plug-in을 설치하여 (임시 라이선스 활용) 테스트를 해보기로 하였습니다. 처음엔 구축된 운영환경 시스템에 직접 마이그레이션 하는 것으로 계획을 잡았지만, Plug-in에 대한 테스트 결과가 없었습니다. 때문에 테스트 환경을 구축하여 테스트를 먼저 진행하기로 결정하였습니다. 또한, 마이그레이션 수행 중 어떤 오류가 발생할지 예측이 어려웠던 것도 이유였습니다.

테스트를 위해서는 과제 선정하는 것도 중요해 보였습니다. 아래와 같이 3가지 기준을 가지고 이에 합당한 과제를 선별하여 진행하기로 결정하였습니다.

  • 가장 티켓 수가 많은 과제: 크기에 따라 Import/export 시간 측정 필요
  • 이미지 및 첨부 파일이 많은 과제: QA와 관련된 프로젝트 경우 첨부 파일이 많기 때문에 누락된 첨부파일이 없는지 체크
  • Workflow 단계가 복잡한 과제: 최대한 많은 오류를 발생시켜 해결 방법 찾기 위함

3개의 과제가 선정이 되었고, 사전 체크 리스트를 만들고 하나씩 하나씩 제거하면서 진행했습니다. 그럼에도 너무 많은 오류가 저를 괴롭혔습니다.(이런 씨뻘건 리스트가 쭈~~~ 악~~~~ 😱)

오류 해결 방법을 하나씩 정리하고, 해결하지 못한 이슈는 과감히 스킵했습니다. 이제 Import를 시작합니다. 앗싸~~~~ 😄 그러나, 이렇게 쉽게 끝나면 안 되겠죠. 약 4시간 후 또다시 오류가 발생했습니다. Export 받은 서버(카카오) Plug-in과 Import 서버(페이) Plug-in 버전이 다르다고 메시지를 보여주네요. 이런저런 우여곡절 끝에 1개의 프로젝트의 마이그레이션을 끝냈습니다.

이제 기존 카카오 프로젝트와 페이 프로젝트 간의 비교를 통한 정합성 체크가 남았습니다. 다행히 티켓들과 첨부파일은 정상적으로 마이그레이션 되었지만, 각종 필터, 보드, 사용자 권한 등 마이그레이션이 안 된 정보들이 꽤 보입니다. 더욱이, Plug-in을 이용하여 만든 정보는 하나도 마이그레이션이 안 되어 있었습니다.(나중에 알고 보니 플러그인 데이터는 마이그레이션 지원을 안 한다고…)

오류를 수정하고, Import하고, 다시 수정하고, Import하고, 이런 상황을 반복하길 며칠… 중간에 오류가 언제 발생할지 모르니, 진행 상황을 계속 모니터링해야 하기 때문에 편하게 잠을 자지는 못했습니다. 다크서클이 생기고, 정신은 몽롱한 상태가 지속됩니다. 😨 마이그레이션 시작하고 4일째 되는 날 드디어 1개 과제를 성공했습니다. 그동안의 피로가 한순간에 사라집니다. 이 여파를 몰아 다시 새로운 과제를 진행했습니다. 우와 잘됩니다. 👏 계획했던 3개 과제 마이그레이션을 완료했습니다. 물론 완벽한 100%는 아니지만, 티켓과 첨부 파일은 모두 정상적으로 마이그레이션되었습니다. 사전에 만들어 두었던 체크리스트로 확인한 결과 나름 만족할 만한 성과를 이루었습니다.

이 기세로 다른 과제들도 좀 더 해보자고 카카오 측과 협의를 해서 진행하기로 했습니다. 과제를 하나하나 하기보다는 그룹으로 묶어서 테스트를 했습니다. 10개 단위, 20개 단위, 50개 단위… 이유는 실제 마이그레이션 수행 시 대략적인 Export/Import 시간을 측정하기 위해서입니다. 그래야 카카오 측에서도 Export 시간에 따라 우리 쪽에 Export된 파일을 전달할 수 있기 때문입니다.

진행하는 와중에 이런! 카카오가 지라 업그레이드를 진행한다고 합니다. 페이 지라도 버전 업그레이드를 진행하였고, 역시나 오류가 발생해서 그냥 재설치를 했습니다.(인프라플랫폼팀 레오 고마워요~) 마이그레이션 하려면 Export/Import 지라의 버전이 동일해야 오류가 감소된다고 하니 반드시 수행해야 하는 작업이었고, 이로 인하여 테스트 기간이 일주일 연장되었습니다.

묶음 단위로 테스트를 해 본 결과 약 Import에만 약 10시간 정도 소요되는 것을 확인하였습니다. 20개와 50개는 묶은 과제는 3일이 지나도 끝나지 않아 그냥 중지하고, 10개 단위로 진행하기로 카카오 측과 협의하였습니다. 마이그레이션 대상 과제를 다시 한번 확인하고, 약 100개 과제를 10개의 그룹으로 진행하는 것으로 계획과 체크리스트를 만들었습니다.

협력업체에서의 긴급 전화를 받다

테스트 마이그레이션이 거의 끝났을 때 협력업체로부터 긴급 전화를 받았습니다. 영업 대표가 타 사이트에서 페이와 동일하게 일부 과제만을 Export하여 새로운 사이트로 Import하는 과제를 맡아 진행하고 있다고 했습니다. 그런데, 우리가 선택한 Plug-in으로 Import 시 오류가 너무 많이 발생하여 마이그레이션을 중지했다고 했습니다. 혹시 모르니 카카오페이도 진행하지 말고 기다려 달라는 당부의 말을 전했습니다. 당장 해결은 어려울 것 같다는 말도 덧붙였습니다.

테스트 마이그레이션 하면서 많은 오류를 발견하고 해결했기 때문에 어떤 오류가 발생했는지 짐작은 되었습니다. 하지만, 혹시 모르니 영업 대표에게 메일로 대표적인 오류를 정리해달라고 부탁했습니다. 회신 메일을 검토한 결과 모두 예상했던 오류였습니다. 그중 많은 부분을 해결했기 때문에 운영 마이그레이션을 진행하기로 기술전략팀 리더인 앨빈과 결정하였습니다. 지금 생각해 보면 과감한 결정이었고 결과적으로 마이그레이션을 완료를 할 수 있었던 계기가 되었던 것 같습니다. 💪 카카오와 운영 마이그레이션을 위해 미팅 날짜를 잡고, D-DAY를 결정하였습니다. (10/11일)

실전 마이그레이션

만반의 준비를 끝으로 운영 환경에서 마이그레이션을 수행했습니다. 역시나 오류가 발생하였지만, 이미 경험했던 오류이기 때문에 크게 걱정하지 않았습니다. 그러나, 첫 시작부터 처음 보는 오류가 발생했습니다. Export/Import는 모두 XML 형태로 이루어져 모듈이 각 XML를 파싱하면서 마이그레이션을 수행합니다. XML 파싱하면서 오류가 발생한 것입니다. 다행히 XML 파싱 시 오류가 발생한 라인을 알려줍니다. 쌩유… 그런데, XML 파싱에서 걸리는 오류가 한두 개가 아니었던 것입니다. 각 오류 정보와 해결 방법을 정리했습니다. 분명히 다른 Import 그룹에서도 발생할 것이 분명했기 때문입니다.

XML 파싱 오류

첫날부터 XML 오류 때문에 진행에 차질이 생겼고, 이틀이 지난 후 드디어 10개 중 5개를 완료하였습니다. 나머지 5개는 왜 오류가 발생했는지 찾아서 해결해야 했습니다. 두 번째 그룹을 마이그레이션 수행했는데, 으..악.. 10개 중 3개만 성공했습니다. 점점 불길한 예감이 들기 시작했습니다. 다행히 주말이 다가왔고, 주말 동안에 집중적으로 마이그레이션 진행과 함께 기존에 발생된 오류도 해결한다는 계획을 세웠고, 결과는 아주 만족스러웠습니다. 다만, 쉬지 못하고 계속 업무를 하다 보니 피곤은 쌓이고 있었습니다.

이후 하루에 1개 그룹을 이슈 없이 Import를 진행하였고, 오류가 발생하는 과제도 거의 없었습니다. 마이그레이션 시작 후 2-3일 동안 발생한 과제는 다른 모든 그룹을 완료하고 마지막으로 진행하였고, 다행히 잘 마무리가 되었습니다. 물론 많은 부분에서 스킵하여 수동으로 처리해야 할 부분도 많았지만 말이지요.

완료된 과제들 하나씩 Project Automation를 수동으로 옮기기 시작했습니다. 사실 옮긴다기보다는 새로 만든 지라 프로젝트에 다시 생성하고 만드는 작업이었습니다. “아. 왜 이렇게 많은 거야.” 그럼에도 하나씩 완료되고, 채널에 공지할 때는 곧 끝날 수 있다는 기대감에 일에 박차를 더 가했습니다.

카카오 지라의 프리징 날짜 이후에 만들어진 티켓들이 존재하기 때문에 일부 과제들은 추가로 마이그레이션을 수행하였습니다. 추가 마이그레이션 방법은 첨부파일은 제외되는 형태로, 수동으로 일일이 하나씩 카카오 지라에서 다운로드해 페이 지라에 등록하는 번거로움이 있었습니다. 노가다 작업이었네요.

마치며

이제 다시 시작이다

마이그레이션 예상은 약 4주 정도였지만, 실제 약 2주 만에 모든 마이그레이션을 끝냈습니다. 2주 동안 거의 잠을 제대로 잔 적이 없었고, 주말 동안에도 계속 작업을 했었기에 몸과 마음이 무척이나 지쳤습니다. 그럼에도 누구의 도움 없이 혼자 이 많은 걸 끝냈다고 생각하니 스스로도 너무 대견하다고 생각했습니다. 🥺 처음 계획했던 일정보다는 2개월 정도 늦어졌지만, 나쁘지 않은 결과였다고 생각했습니다. 입사 후 약 4개월 동안 주어진 첫 업무였기에 소홀함 없이 준비하고 테스트했던 것 같습니다.

팀 회고에서 이번 마이그레이션 프로젝트를 하면서 경험했던 많은 부분을 얘기할 수 있었습니다. 잘한 점은 테스트 마이그레이션을 수행하여 오류에 대해서 많은 것을 경험하고, 해결 방법을 찾았던 것이 가장 큰 수확이었습니다. 또한, 단계별로 체크리스트를 만들어 놓치고 있는 것이 없는지, 예상 시간을 측정해 카카오 측과 Export/Import 시간 스케줄링을 했던 것이 가장 좋았습니다.

물론 아쉬웠던 점도 있었습니다. 개인적으로 오랜 기간 지라를 사용하고 관리도 해봤기에 이번 마이그레이션을 다소 쉽게 생각했습니다. 때로는 경험이 독이 될 수도 있다는 것을 알게 되었습니다. ‘돌 다리도 두들겨 보고 건너라’라는 속담처럼 아는 것도 다시 한번 생각하고, ‘경험했다고 만만하게 보지 말자’라고 생각하는 계기가 되었습니다. 이제 큰 산 하나를 넘었다고 생각합니다. 다시 더 높은 산을 넘기 위해 준비해야 할 것입니다. 지라를 이용하여 페이만의 업무 프로세스를 구축하고, 크루들의 업무 생산성과 효율성을 증가시키기 위해서 말입니다.

이후 2탄에서는 위키 마이그레이션과 우리 페이에서 지라와 위키를 어떻게 하면 더 잘 활용할 수 있을지 공유하겠습니다. 끝까지 읽어주셔서 감사합니다.

andreas.lee
andreas.lee

기술전략팀 안드레아스입니다. 카카오페이에서 지라/위키 운영 및 관리를 담당하고 있습니다. 지라/위키 사용이 처음이신 분, 또는 사용하면서 궁금한 사항, 좀 더 고급 사용자가 되기 원하시는 분, 또는 이런 것까지 물어봐야 하나 싶은 것 등 질문을 해주시면 감사하겠습니다. 질문은 슬랙 채널(#help-지라위키및서비스데스크-문의) 이용 부탁드립니다.

태그