여기는 서버쪽 종사하시는 분이 많이 계신것 같아 DB 관련 해서 질문 드립니다.

kealice   
   조회 4494   추천 0    

안녕하세요.

저는 그냥 기계공학과에 재학중인 대학생인데요.

요즘 계속 제 머리를 괴롭히는 질문이 있는데, 도통 어떻게 해야 할지 모르겠어서 여기에 글을 올려봅니다.

요즘에 PaaS 니 IaaS니 SaaS니 이런 말들이 떠돌아 알아보다가

heroku나 오픈쉬프트같은 서비스를 찾게 되었습니다.

그래서 거기에 그냥 워드프레스 올려서 한번 블로그 만들어 보려고 하는데

이런 서비스들은 로컬에서 개발해서 git로 push를 하면 이제 하나의 어플리케이션처럼 동작하더군요.

그런데 여기서 문제가 어플리케이션 (그러니까 웹)에서 수정한 것들을 로컬단(git 레파지토리)에 반영할 방법을 모르겠습니다.

뭐 워드프레스야 XAMPP와 Openshift Env를 이용해서 꾸역꾸역 로컬에서 개발할 수 있는 환경을 갖췄습니다만

문제는 DB입니다.

웹에서 게시물 같은걸 아무리 올려도 그걸 개발할 시점에 다운 받을 수 없으니까 플러그인 같은걸 수정해서 push한들 게시물도 다 날아가고..

설정값은 또 로컬 DB랑 안맞아서 웹에서 또 다시 설정해야 하고..

이게 너무 귀찮고 불편합니다.

그렇다고 매번 phpmyadmin을 이용해서 덤프 하자니 뭔가 귀찮기도 하고 2GB를 넘는건 안된다고 하니(넘을일도 없겠지만) 그냥 그런 제약사항들이 싫습니다.

또 그렇다고 rhc의 port fowarding을 쓰자니 브랜치를 만들어서 개발하는 git하고는 맞지 않습니다.

행여나 뭔가 잘못되서 롤백하려고 해도 DB는 version control이 안되어 있으니 그냥 DB만 꼬이게 됩니다.

로컬에서 다 개발해서 git로 push하되 로컬에서 개발할 때 어플리케이션(웹)의 게시물이나 그런 정보를 동기화 하거나 diff를 가지고 merge 할 수는 없을까요?

추가1

제가 원하는게 정확히 전달이 안될 것 같아 아래 더 추가 합니다.

먼저 로컬에 있는 WebServer(XAMPP)와 MySQL서버를 이용해서 제가 원하는 것들을 적용 합니다. 플러그인이나 업데이트나 기타 등등..

그 뒤, git의 메인라인이랑 merge한 후, push를 하는데 이 때 웹서버에 있던 워드프레스는 뭐 그냥 업로드만 되면 되니 상관 없습니다.

근데 문제는 컨텐츠가 들어있던 DB입니다.

제가 개발을 해서 올리더라도 DB에는 영향을 못주니 그냥 변경사항들이 다 날아가 버립니다.

지금까지 올렸던 게시물이며, 플러그인 설정들이며..

이걸 해결할 수 있는 방법이 없는지요?
짧은글 일수록 신중하게.
김황중 2015-02
글을 읽다보니 과거 이런것이 생각나네요.

홈페이지 제작을 하면서 저는 아직도 급할때는 메모장으로 작업을 합니다.
홈페이지 코딩을 메모장으로 어떻게 작업을 할수 있을까요?
기본이 있어야만 한다는 얘기겠죠.

물론 저도 리눅스쪽은 잘 다루지 못합니다만
결국에 이런 저런 애드온 프로그램을 사용한다고 해도
맘에 않들면 뜯어 고쳐야 합니다.
워드프레스의 스타일 시트 또한 마찮가지고요.

뭐든 기본을 충실히...  그러다보면 하시고 싶은 것에 대하여 위와같은 질문들이 차차 사라지게 될것입니다.

결국에는 리눅스또한 yum설치가 아닌 직접 커스터마이징을 하게 된다고 하더라고요.


이 단계가 되실때 쯤이시면
위와 같은 고민들은 사라지게 될것입니다.

일단을 기본부터 차근차근 힘들어도 익혀 보세요.....^^
     
kealice 2015-02
답변 감사합니다.

이쪽이 전공이 아니다 보니 기본기가 많이 부족한가 봅니다 ㅠㅠ
MySQL 을 잘 쓰지 않아서...잘 모르겠습니다만...

1. DB 변경사항을 쿼리로 작성 (테이블 수정은 alter table 등을 이용, 테이블 생성은 create table 등)
2. 작성된 쿼리를 git 에서 관리
2. git 배포시 db 파일은 제외하고 배포
3. 서버의 DB 를 백업 (혹은 덤프)
4. 쿼리로 작성된 DB 변경 사항을 서버에 적용

이렇게 하면 일단은 해결되지 않을까 싶기도 합니다.

DB 가 버젼컨트롤이 안되는 문제는...개발자 입장에선 곤역이긴 합니다.
     
kealice 2015-02
답변 감사합니다.

DB 버전 컨트롤은 정말 어려운 일인가 봅니다 ㅠㅠ

해외 사이트들에서도 DB에 GIT로 버전컨트롤 하는 것은 너무 비효율적이라고 하니..

말씀하셨던 것처럼 쿼리로 관리를 하던지 아니면 밑에분 처럼 스냅샷을 떠서 merge를 하던지 해야 할 것 같습니다 ㅜㅜ
무아 2015-02
뭔가 잘 정리가 안되는데요.
로컬에서 개발한걸 서버에 올릴때는 git push 로 했다면
서버에서 최종 변경한 것을 로컬로 가져올때는 git checkout 하는 것 아닌가요?

그리고 db는 서버에 것을 상황에 따라 서버에서 롤백하는 것은 문제가 있어보이고
push 에 의해 변경점이 있을 때 마다 db를 스크린샷 처럼 백업을 떠두고
나중에 로컬에서 원하는 변경점의 버전으로 revert 한다면 그 때 백업된 해당 버전의 db를 로컬에 복사하고 로컬 db를 만들어 로컬에서 작업해야 하는 것 아닌가요?
     
kealice 2015-02
제가 생각해도 뭔가 정리가 잘 안된 느낌입니다.. 독서를 더 해야 하나 봅니다.

무튼

일단 Openshift같은 경우는 git push하게 되면 릴리즈 하는 것과 동일합니다.

그 후에 Openshift 어플 내에서 암만 바꿔봐야 소스단에서는 아무런 변화가 없습니다.

git checkout를 하게 되더라도 그냥 소스는 누가 수정한 적 없으니 최신 상태구요.

말씀하셨던 것처럼 DB의 스냅샷을 떠서 작업 하는 방향으로 가야 될 것같습니다.

이쪽 분야는 너무 어려운 것 같습니다 ㅠㅠ
윈도우10 2015-02
불편하기 때문에 굳이 저렇게 개발하지 않습니다..현업에서는요.
각종 도구를 매끈하게 연동시킬수가 없기 때문에 100% 기본만으로 컨트롤할 수 있도록 Native환경에서 합니다..
     
kealice 2015-02
답변 감사합니다..

궁금한게 있는데 그러면 개발과정에서 실수가 됬던 버그가 됬던 그런게 발견되면

Native환경에서 작업을 하게 되면 서비스에 장애가 생겨 중단되지 않나요?

일반 소프트웨어야 릴리즈 전에만 잡으면 된다지만 지속적으로 서비스를 하고 있는 웹 환경에서는 이런 장애는 좀 심각할 것 같아서요.

제가 이 쪽 관련 전공도 아니고 종사자가 아니라 잘 몰라서 그러는데

혹시 실무에서는 조금 큰 버그나 이런 것으로 인한 서비스 장애시에는 어떻게 대처하시는지요..?


QnA
제목Page 3681/5725
2014-05   5242720   정은준1
2015-12   1768060   백메가
2016-08   4504   쭉쭉벌레
2018-10   4504   일론머스크
2007-04   4504   류기중
2017-04   4504   Sikieiki
2015-06   4504   isaiah
2015-10   4504   무아
2019-10   4504   블루영상
2014-09   4504   백남억
2016-08   4504   겨울나무
2016-07   4504   AplPEC
2018-06   4504   thslr74
2015-04   4504   고양이양이
2016-12   4504   김영균
2015-07   4504   가빠로구나
2007-01   4504   김동원
2014-08   4504   서울김창희
2019-04   4504   적멸보궁
2019-05   4504   이호승
2017-05   4503   삐돌이슬픔이
2017-11   4503   진신두