Parse.com 마이그레이션 #1

오늘 Parse.com으로 부터 아래와 같은 메일을 한장 받았다.

“We’re happy to announce that we’ve partnered with MongoLab and ObjectRocket to give you a discount on database hosting. Both companies have deep experience in helping Parse customers migrate to a fully managed MongoDB solution, and are the perfect partner for scaling your app. You’ll need to act fast, as both these discounts are only valid if you start in the next 30 days.

내용인 즉슨 Parse 서버에 있는 데이터를 MongoLab 이나 ObjectRocket 클라우드 서비스로 마이그레이션을 하라는 얘기였다. 그리고 지금부터 한달안에 마이그레이션하면 디스카운트 해준다고… ㅎㅎㅎ 나는 이 디스카운트에 낚여서 오늘 본의 아니게 미뤄뒀던 알리브로 마이그레이션 작업을 하게됐다.

Parse.com 서버 마이그레이션

마이그레이션에 대한 자세한 내용은 공식 가이드 문서를 참고하면 되는데 사실 영어라 눈에 잘 들어오지도 않고 처음 파스닷컴 문 닫는다고 발표했을때 살짝쿵 멘붕이라 주의깊게 읽어보지도 않았다. 좌우지간 오늘은 가이드에서 얘기하는 첫번째 스탭을 밟아보겠다.

1. DB 마이그레이션를 위한 준비

공식 가이드 문서를 열어보면 제일 먼저 눈에 들어오는게 아래와 같은 그림이다.

enter image description here

여기서 파스닷컴의 현재상황은 Step 0으로 표현된다. 무슨 말인고하니 파스닷컴은 API 서버 역할 뿐만 아니라 “Parse Hosted DB” 라고 표시된 DB 서버를 가지고 있었다는 얘기다. 그래서 첫번째 DB 마이그레이션 단계가 바로 이 파스닷컴에서 서비스 해주던 DB를 딴데로 옮기라는 뜻이다.

그래서 처음엔 어디로 옮겨야되나? 막막했다. 막막함에 일단 그림에 나와 있는데로 아무생각없이 내 로컬 PC에 MongoDB를 설치했다. 그리고 파스닷컴의 API 서버가 내 몽고디비를 바라보도록 하면 되는건가? 싶었는데, 그러면 내 로컬PC가 항상 켜져있어야된다. 어랏! 그럼 안되지!! 처음 가이드 문서를 대충읽었을때 여기서 막혀버렸다. 도대체 어쩌라는 건지.. ㅎㅎㅎ

오늘 다시 읽어보니 그림에서 “Self Hosted” DB는 로컬에 MongoDB를 설치하라는 얘기가 아니라 파스닷컴에서 서비스하던 데이터를 니가 책임져라! 라는 뜻이었다. 즉, 몽고랩이나 오브젝트로켓 같은 클라우드 서비스로 옮기라는 뜻이다. 파스닷컴은 몽고랩이 샌드박스 하나는 공짜니까 몽고랩을 추천한것 같다. 여튼 2~3년전에 한번 가입한거 같았는데 계정을 잃어버려서 새로 만들었다.

2 몽고랩(MongoLab) 계정 만들기

몽고랩은 500MB 짜리 샌드박스 하나를 무료로 만들수있다. 이 샌드박스에 데이터베이스를 만들고 Users 탭에서 유저를 하나 생성한다. 그러면 아래와 같은 명령어로 몽고랩 DB 서버에 접속해서 Shell 명령어로 조회를 해볼수있다. 참고로 내가 만든 데이터베이스 이름은 rlibro 다.

$> mongo ds015878.mongolab.com:15878/rlibro -u <dbuser> -p <dbpassword>

쉘로 접속할때는 위와 같은 명령어를 쓰지만 프로그램에서 데이터를 조작할때는 아래와 같은 MongoDB URI를 이용한다.

$> mongodb://<dbuser>:<dbpassword>@ds015878.mongolab.com:15878/rlibro

3. 파스닷컴(Parse.com) DB를 몽고랩에 마이그레이션하기

이제 가이드 문서의 그림처럼 Step1을 진행해보자. 파스닷컴 대쉬보드로 가서 App Settings > General 메뉴에서 Migrate 버튼을 클릭한다.
enter image description here

그림처럼 몽고랩 URI를 넣어주고 마이그레이션을 시작하면 파스닷컴의 모든 데이터를 몽고랩 DB로 싱크시켜준다. 그리고 Finalize 버튼을 클릭하면 더이상 파스닷컴 서버의 DB를 사용하지 않고 몽고랩 서버의 DB를 사용하게 된다. 즉 아래 그림처럼 된다.

enter image description here

여기까지가 파스닷컴에서 메일로 노티까지 해가면 마이그레이션하라는 첫번째 단계가 되겠다. 다음 단계는 파스닷컴의 API 서버를 대체해줄 Parse-Server를 로컬에 설치해서 몽고랩 DB와 연결하는 단계다. 이건 다음에 정리~!!

참고 및 이미지 출처

  1. https://github.com/ParsePlatform/parse-server/wiki/Migrating-an-Existing-Parse-App
  2. https://learnappmaking.com/how-to-migrate-parse-app-parse-server-heroku-mongolab/

세계여행 104일째, 빈대와의 전쟁

어제 이른 아침 우유니를 떠나 마침내 수크레에 도착했다. 와보니 진짜 살만하다. 사실 우유니에 있을때 어찌나 열악하던지 거리엔 볼것하나 없고, 먹을것도 관광지라고 비싸기만하고 맛은 없고 당장에 이 거지같은 나라 볼리비아를 떠나고 싶다고 어서빨리 칠레가고 싶다고 그랬는데.. 후회할뻔했다!

최후의 만찬

아침부터 버스타고 오니라 밥한끼 제대로 못먹고 화장실 한번 못가고 장장 7시간 반을 달려왔기 때문에 일단 도착하자마자 밥부터 먹기로 했다. 두끼를 제꼈기 때문에 오늘저녁은 그냥 넘어갈수없다! 스테끼~~~~!! 여봉이 나 스테끼!!! 그리하여 수크레 넘버원 맛집으로 유명한 Abis Patio로 갔다. 아참 최후의 만찬엔 우유니에서 만난 일본인 나노짱도 함께했다. 나는 두말할 나위없이 스테끼를 시켰고, 속이 안좋다며 옆지기는 아이스크림과 샐러드를 시켰다. 나노짱은 샐러드와 햄버거! 여튼 주문해놓고 나노짱과 폭풍수다! ㅋㅋㅋ 나노짱 진짜 발랄하다. 그렇게 30분이 지났을까? 음식이 나온다.. 드디어!!!

두툼한 스테이크는 아!.. 이것이 진정 맛집이로구나!! 단돈 만원에 이런 퀄러티의 스테이크는 진정 듣도 보도 못했다! 어깨춤이 절로 나온다. ㅇㅎㅎㅎㅎ 가히 104일간 먹은 것중 최고다! 아 역시 수크레오길 잘했어~ +++_+

빈대와의 전쟁

암튼 그렇게 맛있는 저녁을 먹고 호스텔로 돌아왔다. 옆지기는 피곤한지 한참 숙소를 찾다가 잠이들고 나도 슬슬 정리하며 잠이 들었는데,.. 갑자기 “오빠!” 응? 머야? 왜? 뭐야? 자다가 일어났더니 옆지기가 이블 위를 기어다니던 빈대를 잡아 족쳤는지 시뻘건 피를 가르키며 안돼겠다고 이사를 가야겠다고 한다. 헐퀴! 누가 물린거지? 아직 난 물린 자국이 없는데,.. “건빵아 너는 어때?” “응! 아직 물린데는 없어.”

안그래도 푸노에 있을때 빈대를 물려서 손이 퉁퉁 부어 있다가 이제야 가라 앉기 시작했는데, 헐.. 또 빈대야..-_-;; 수크레 첫날부터 빈대라니.. 사실 가격대비 괜찮은 호스텔이라고 생각했는데 역시 맘대로 되는게 없다. 아직 물린 자국이 없으니 일단 자고 내일 아침에 일어나서 물렸으면 이사가자!

다음날 아침

아~~~ 뭐야! 물렸다. 결국…ㅎㅎㅎ 왼쪽 옆구리 한방 -_-;; 잠복기가 있기 때문에 사실 더 많이 물렸을찌도 모른다. 아.. 뭐닝? 그래도 뭐 가려워 미칠지경은 아니다. 참을만하다. 짐싸기 귀찮은데 아침부터 다시 찜싸고 숙소도 겨우겨우 예약을 했다.

빨래와의 전쟁

새로 잡은 숙소는 호스텔은 아니고 가정집이다. 다행히 빈대 호스텔에서 멀지 않았다. 초인종을 누르고 주인을 기다린다. 어랏? 너무 일찍 왔나? 반응이 없다. 한번더 눌러본다. 잠시후 문이 열렸다. “올라~” 반갑게 인사를 하고 대문을 들어서자.. 와우~! 집이 엄청크다. 왜 늦게 나왔는지 알것같다. ㅎㅎ 에어비엔비를 통해 1주일을 예약했는데, 바로 2주를 더 있기로 했다. 괜찮은 집이다. 절로 미소가 나온다. 우리가 묵을 곳은 3층에 있는 방하나. 주인 안나가 집안 곳곳을 소개시켜줬다. 옥상엔 세탁기가 있고 뷰도 너무 좋다! 자자 집구경 끝났으니 그동안 밀린 빨래를 좀 해야겠다.

옥상에서 빨래를 시작한 시간은 11시 40분쯤 빨래가 끝난 시간은 오후 4시 40분 ㅎㅎㅎ 빨래하고 밥먹자 했는데 저녁이 되어 버렸다. -_-;; 한국에서 잘 먹지도 않는 라면이 거의 한달에 서너번은 해먹는듯 싶다. 이거시 고향의 맛인가? 아님 귀차니즘의 맛인가? 난 잘 모르겠다. 맵다. “건빵! 제발 스프는 반만 넣자! 응?”

세계 여행 100일째, 볼리비아 우유니

새벽에 볼리비아 우유니에 도착했다. 계획대로라면 수도인 수크레로 가야했지만 역시나 장기 여행은 변수가 많다.
볼리비아 선거가 코앞이라 수크레로 가는 버스가 모두 매진됐다. 사실 매진된건지 아예 운행을 안하는건지 모르겠다. 암튼 다음주 월요일이 되야 버스가 있단다. 결국 수크레를 포기하고 우유니로 왔다. 물론 라파즈에 몇일 보낼수도 있었지만 나나 와이프나 모두 원치 않았다.
우유니에 도착한 시간은 새벽 5시쯤 아직 해도 안떴다. 다행인건 여행객들이 많아서 아침식사와 샤워를 제공한다는 까페 삐끼(?)라고 하긴 뭐하고
암튼 아줌마가 터미널까지와서 우리를 이끌었다. 인터넷이 된다는 이곳 카페도 인터넷은 그다지 좋지 않다. 연결이 됐다 안됐다 반복된다. 쿠바도 아닌것이 인터넷은 포기! 일기나 쓰자.

역할 분담

여행 50일이 넘어서면서 나와 와이프의 역할이 어느정도 갈렸다. 스페인어가 나보다 유창한 와이프는 새로운 곳에 도착하면 나에게 짐을 맡기고
여기저기 숙박을 알아보러 다닌다. 때론 여자 혼자 보내는게 안쓰럽지만 그 반대도 마찬가지다. 대신 나의 역할은 짐꾼이다. 와이프가 없는동안엔 짐을 보며 보통 멍때린다. 아무래도 노트와 펜을 하나 사야겠다. 오늘처럼 카페에 앉아 있을수만 있다면 노트북을 꺼내 글이라도 쓰겠지만 대부분은 그냥 길바닥 위에서 짐을 내려놓고 멍때리기 일쑤다. 왠지 뭔가를 끄적이지 않고 멍때리고 있으면 시간이 아깝다.

우유니

밤버스에 여독이 풀리지 않은 상태에서 우유니로 출발했다. 그동안 수없이 들었던 그 갑질(?) 우유니! 그런데 우유니 투어는 마츄피츄에 비하면 정말 양반이었다. 중간에 밥도 주고 가격대비 꾀 괜찮은 투어라는 생각이든다. 소금사막에 물이 좀더 찻으면 어땠을까? 조금 아쉬움이 들기도하지만 하루종일 사진 찍느라 우리 웨딩촬영보다 힘들었다. 그래서 또 가고 싶은 생각이 싹 사라졌다. 우유니도 그랬고 마츄픽츄도 그랬지만 이런 유명 관광지를 다녀왔을때 그 무엇이 나에게 주는 특별함 보다는 언젠가 옆지기와 맞아! 그래 그랬지! 하며 추억꺼리가 하나 더 생긴거 같아 좋다.

여행 100일

여행 100일엔 파티를 하고 싶었는데 어쩌다 보니 우유니에서 100일을 보냈다. 나도 뭔가 여행 백일에 대한 소회를 써보고 싶지만 100일이라는 시간이 소회를 남기기엔 그렇게 긴 시간은 아닌것 같다. 200일에 다시 써봐야겠다.