개발 Q&A

제목 하나의 CI 로 무한대의 사이트를 생성하고 싶을 때, 문의드립니다.
글쓴이 하늘치 작성시각 2015/04/03 17:26:28
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 12836   RSS
질문을 위한 용어 선택이 조금 어렵네요. 
포럼 내에서 검색도 충분히 한 후 드리는 질문이니 감안해주세요~ ^^;


초기에 하나의 웹사이트를 만든 후, 복사해서 각각의 도메인을 가진 일곱개의 웹사이트를 추가로 만들었습니다. 
총 8개의 호스팅 계정이 생긴 거죠.

최초에 만든 웹사이트와 추가로 만든 일곱개의 웹사이트에서 생성된 DB 자료를 양방향으로 서로 검색하고 쓸 수 있게 하기 위해서 호스팅 계정은 별개로 8개이지만, DB는 최초의 웹사이트에서 생성한 것 하나로 쓰고 있습니다. 어차피 같은 서버 내에서 제가 생성·관리 하는 거라 사용상의 문제는 없었습니다. 대신 각각의 DB 테이블마다 접속 도메인 값을 집어 넣어서 구분했었습니다. 회원 테이블, 게시판 테이블(원테이블), 구매 내역 등등..

그런데 최초 사이트를 복사해서 추가로 만들 때마다, 개발 소스가 조금씩 업데이트 되어, 현재 8개의 웹사이트가 모두 조금씩 다릅니다; 컨트롤은 물론 심지어 모델 내용까지 완전히 같지는 않습니다;;;

문제는.. 최초 사이트가 최종 완성형이 아닌지라 계속 수정보완해야 하는데, 지금껏 만들어진 8개 웹사이트가 다 그렇습니다;;;; 겨우 8개인데 지쳐버렸습니다..

문제는 앞으로 계속 추가로 만들어갈 예정인데, 더 이상 이렇게는 작업을 못하겠더라고요. 물론, 처음부터 이렇게 될 거라고는 예상치 못했기에.. 원래는 하나 만들고 그걸로 끝이었거든요;




아무튼, 상황을 정리해야 할 필요가 생겼습니다. 저 혼자 개발을 맡고 있는데, 개발자를 추가로 데려 오더라도 이 상태로는 노답이라서요;

아이디어는 있었지만, 선뜻 행동으로 옮기지 못했던 것이 바로 포털의 카페나 블로그 개설방법이었습니다. 
하나의 CI 로 무한대의 사이트를 생성하는 방법이 좋겠구나 싶었습니다.
포럼에서도 여러번 비슷한 경우에 대한 글들이 있더군요. 



CI 디렉토리 구조에 대해서는 아래처럼 어느 정도 윤곽이 잡혔습니다만, 문제는 DB 네요.

[디렉토리]

+application
+system
+www
   -include
   +data
      -site1
      -site2
      -site3
   -tpl



[디비]
  1. 기존처럼 하나의 DB 에 각 테이블마다 도메인 구분 칼럼을 넣어서 만드는 것이 좋을지..
    1. 요렇게 하면.. 디비 하나에, 테이블도 처음 만들어놓은 그 상태(예를 들어 20개)로 사용할 수 있지만,
    2. 웹사이트가 늘어갈수록 디비에, 그리고 디비의 각 테이블에 부하가 얼마나 갈지를 몰라서 고민입니다.
  2. 도메인마다 DB 계정을 추가하는 게 좋을지.. 
    1. 요건 안되겠네요; 서버에 DB 생성 갯수 최대치가 정해져 있군요;
  3. 하나의 DB를 쓰되 공용으로 사용할 최소한의 테이블에만 도메인 구분 칼럼을 넣고, 하나의 웹사이트를 추가할 때마다 테이블 자체를 늘리는 것이 좋을지..
    1. 이렇게 하면.. 하나 추가할 때마다 테이블 수가 20개씩 늘어버리는;; 10개 사이트면 테이블 수만 200개;;;


결국 1번을 지지고 볶고 해야 하는 건가요;;

조언 부탁드립니다..
 
 다음글 사용자 로그인 세션 (1)
 이전글 부트스트랩 3버젼 모달창 질문입니다 (1)

댓글

하늘치 / 2015/04/03 17:33:47 / 추천 0
DB에서 1번안을 쓰고 있지만, 요 방식을 그대로 쓰자니 걱정되는 부분은 이렇습니다. 
만약 8개의 웹사이트 중 하나의 계정에서, 실수로 쿼리를 하나 잘못 날리면.. 나머지 사이트에 영향이 그대로 미친다는 거죠;;
실제로 제가 한 번 그런 실수를 했었습니다;; 완전 놀랐던 기억이 나네요;;;

 
변종원(웅파) / 2015/04/03 18:12:36 / 추천 0
그런 실수는 개발자가 하는 것이지 사용자가 하는 것은 아니니 백업, 개발서버 등으로 처리하면 됩니다.

1번으로 진행하시고 데이터가 많아질 것을 대비해서 사이트별로 db 파티셔닝을 하시는 것도 좋습니다.

어차피 1대의 서버가 감당할 수 있는 한계가 있어서 무한대는 생각일 뿐이지 실제로는 많아야 몇백개? 입니다.
(1카피본의 ci로 만든 cms로 1500개의 홈페이지를 셋팅한 케이스가 있긴 합니다만 1500개의 홈페이지가 모두 동시접속하는 것은 아니라서
1대의 서버에서 처리가 됐던 기억이....)

기획쪽이나 윗선에 늘어날 예상 갯수를 알려달라고 하셔서 (접속자수 및 트래픽도) 서버 1대에 mysql 1대로 구성을 할지
서버 여러대에 mysql 1대(추후에 리플리케이션이나 클러스터 구성 등등)로 구성할지 아키텍쳐도 생각하셔야 합니다.

서버 여러대를 로드밸런서 아래에 두고 db는 사양좋은 것으로 1대 구성하고 1-100번 사이트는 1번, 더 늘어나면 mysql 1대 추가하여 101-200은 2번 mysql 로 연결할 수도 있구요.

 
하늘치 / 2015/04/03 19:05:50 / 추천 0
변종원// 조언 감사합니다.
스타트업인지라, 이래저래 일이 많네요. 
일단, DB 구성에 대해서는 조언해주신대로 해보겠습니다.
감사합니다~ 
주말 잘 보내세요~ ^^