티스토리 뷰

소소한 이야기/도움정보

Yobi에서Yona로 이관 과정에서의 시행착오

이상주의를 품은 현실주의자 몽땅™ 2016. 5. 18. 13:08

우리는 종종 익숙했던 것을 버리고 새로운 무엇인가를 받아들여야한다. 이때 부딪히는 문제점은 익숙했던 경험[각주:1]을 버려야 할지 모르는 위험 부담이 크다. 나 역시 종종 이러한 일[각주:2]을 하게 되는데, 최근에 대학원 연구실에서 했던 개인프로젝트 형상관리에 대한 데이터 복원 및 이전을 하면서 그 기록과 경험을 남길려고한다. 여러 형상관리 툴과 이슈트레커를 사용해왔지만 본 포스트에서는 Yobi와 Yona에 대해서만 다루게 될 것이다.


Yobi[각주:3]란 무엇인가? Yobi는 네이버가 nForge[각주:4]로 개발하던 형상관리 SW[각주:5]가 새롭게 이름을 달고 나온것있다 play framework[각주:6]와 java, scala[각주:7]를 통해 구동되고 개발되며 DB[각주:8]는 H2 Embeded를 사용한다. 하지만 정식 출시도 못하고 프로젝트는 종료[각주:9]되고만다. nForge때부터 개발해오던 개발자들이 Yobi를 fork[각주:10]해서 Yona[각주:11]라는 포크 프로젝트를 만들었다. 즉, 중간에 여러 이름으로 바뀌였지만 상당히 오랜 기간동안 개발 되어온 형상관리 SW이며 git/svn을 둘다 지원한다.


이렇게 변화를 거치면서 진통을 겪기도 하였다. 개발자도 고민했을 문제고 사용자도 묵인할 수 없는 문제였다. 그래도 생각보다 오래동안 튼튼하게 발전해왔다. 일단 이관작업에서 가장 큰 걸림돌은 데이터베이스의 교체이다. 기존에는 H2Database Embeded를 채택하여 서버 디렉토리에서 바로바로 처리하는 방식이였다라고 생각할 수 있다면, 변경된사항은 별도의 DB서버를 구축하고 참조하는 방식이라고 볼 수 있다. 둘다 장단은 있지만 내장(embeded)방식은 사용자가 많아지면 큰 문제가 생길 수 있다는 문제로 인해 오픈소스 DB중 MariaDB를 이용하기로 했다고 한다. 그로인해서 앞으로 꾸준한 업데이트를 위해 MariaDB로 데이터를 이관해야한다.


그냥 새롭게 만들었다면 큰 문제가 없었을텐데, 나는 연구실의 yobi 데이터를 새로 구성한 yona 서버(이하 확장서버)로 병합을 하는것이 목적이였기에 손이 더 많이 갔을 수 있다. 두 서버의 데이터가 충돌하지 않으면서 유지 되어야하기 때문에 기존의 yobi 서버(이하 연구서버)를 백업을 해야했다. 다행이도 DB 백업툴을 제공해서 데이터를 뽑는데 어려움은 적었다[각주:12]. 하지만 백업한 데이터를 복원시킬때, 데이터가 유실되는 일이 발생하였다. 처음에는 백업된 파일이 잘못된줄알고 계속 새롭게 백업을 다시 받아서 적용해보았지만 파일은 정상인것 같았다. 그럼 프로그램 버전 문제인가 살펴보았지만 그건 아니였다. 그래서 혹시나 하는 마음에 DB를 살펴보니 매번 누락되는 시점은 달랐지만 데이터가 누락되는 지점이 있었다. 그래서 백업된 파일(질의문을 담고 있다.)의 질의문을 파헤쳐보았다. 결론은 백업할 때 만들어진 질의문이 무질서하게[각주:13] 오류를 만들어내었다. 질의문에서 문제가 발생할 줄은 몰랐다[각주:14]. 이렇게 질의문을 하나하나 검토했다. 즉, 연구서버의 내용만 끝난 상황이다. 확장서버로 같은 일을 했어야만했다. 그 작업을 완료하고 데이터를 병합하고 서버를 구동했다. 하지만 문제는 끝나지 않았다. 대부분은 잘 되었지만, 프로젝트 속성(라이센스, 사용툴, 플랫폼, 등)을 정의하는 테이블이 말썽을 부려서 프로젝트마다 복원을 해주어야했다. 


이번일로해서 다음에도 이런일이 발생한다면 공식적인 방법도 신뢰할 수 없다는 것을 알게되었다.


포스트라기보단 기억 노트에 가까운 이야기 끝.

  1. 데이터, 설정, 단축키 등 [본문으로]
  2. 익숙했던 경험을 그대로 이전하거나, 버리고 새롭게 시작하는것 [본문으로]
  3. https://github.com/naver/yobi [본문으로]
  4. http://dev.naver.com/projects/nforge 로 개발해서 https://github.com/nforge/devnote (구 nForge4)로 됨 (node.js -> java) [본문으로]
  5. Software, SW [본문으로]
  6. https://www.playframework.com [본문으로]
  7. http://www.scala-lang.org/ [본문으로]
  8. Database, DB [본문으로]
  9. 가장 마지막 버전은 v0.8.2 [본문으로]
  10. 프로젝트를 복사해서 새롭게 개발하는 것, 포크 [본문으로]
  11. https://github.com/yona-projects/yona [본문으로]
  12. 데이터가 뽑히다가 말았던적을 제외하면 문제없이 데이터를 백업할 수 있었다. [본문으로]
  13. 무질서라는 이야기는 비슷한 질의문도 레코드마다 되는것이 있고 안되는것이 있다는 이야기다. [본문으로]
  14. 공식적으로 제공하는 방법을 이용해서 그렇게 생각을 할 수밖에 없었다. [본문으로]
댓글
댓글쓰기 폼
공지사항
최근에 달린 댓글
Total
21,206
Today
5
Yesterday
1
링크