본격적인 Docker활용해보자 기획편

in #docker8 years ago (edited)

Docker에 대한 자세한 설명은 구글링 하면 나오기 때문에 생략한다.
첫포스팅으로는 Docker를 기획한 내용을 적어보자고 한다.
프로젝트명은
"차세대 버젼관리 프로젝트 With Docker "
이다.
엄청나지 않는가?!!!!!!!!!!!!!!!!!!! 차세대다!! 심지어!! 차세대라니!!! 정말 촌스럽니다.
이유는 간단하다. 그럴 듯 하게 만드는게 보고?에 편리하고 이것을 꼭 해야만? 할것 같다는 느낌을 주기 때문이다.

사실 별거 없다. Docker라는게 구성도 편하고 설정도 편하다 공부해보면 알겠지만, Dockfile로 표준화 하는게 좀 어려울 뿐이지 조금만 구글링 하면 설정하기가 너무 쉽다.

Docker를 이용하고자 했던 가장 큰 이유는

  1. 버젼관리 노답
  2. 루틴한 점포 서버 배포
  3. 테스트 환경 구축 어려움
  4. 비용
  5. CSR 과 연동
    외에 많은 것이 있지만. 사실
    1번과 2번이 가장 큰 이유였다.

현재 운영 중인 시스템은 현지 업체가 개발한 Inhouse가 아닌 사용 서비스이다. 초기에 버젼관리를 전혀 안하는 업체를 보고 git 환경을 구축하고, 제공하였는데 git이 귀찮다고 쓰질 않는다. 초기에는 Redmine과 git으로 관리하는 장대한 꿈을 꿨지만 나만의 꿈이였다. (결국 Redmine은 CSR용으로만 사용중)
비용은 비용대로 사용해서 개발을 했는데 심지어 업체와 함께 협의해서 Git 정해서 진행 했는데 왜 안쓰냐..

현재 운영하는 서버는 본부 A, 본부 B, 본부DB_P, 본부DB_S, 본부_dev, HR, 점포A_POS,점포A_Report .. 등등 etc ... 외에 다수이다. 약 17대 정도 관리하는 듯 싶다.
사실 이것 외에 인프라도 설치 운영하고 있고 내가 뭐하는 사람인지 점점 모르게 되어가고 있다.

운영팀 인력은 본인1, 현지인2 총 3명으로 구성되어있는데 이건 나중에 한번 자세히 ..

이중에 약 80프로가 같은 구성으로 서비스 되고 있다. 점포 서버 같은 경우 각각의 점포가 다른 버젼으로 서비스 되고 있는 경우가 발견되고.... 언제 어떤걸 개발 업체가 수정했는지도 모르겠고.. 배포 스크립트도 짜줬는데.. 변경된 파일만 스캐닝해서 각각 점포 서버로 보낼수 있게..이것도 나중엔 똥이 되더라... 개발한 기능이 A점포에는 적용이 되어있는데 C점포에는 안되어 있는 경우가 생기기 시작했다. 처음에는 내가 하나씩 확인하고 진행 했지만 점점 업무량이 넘치고 담당자 지정해서 진행 했음에도 불구하고!!!! 한국이 좋았다. 진짜 한국사람들 일 잘한다.

여튼 똥망하고 있는 걸 내가 정리하지 않으면 도저히 답이 없을것 같았다. 그래서 처음에는 Cloud 형태로도 생각해봤지만 비용이 없다. 그리고 하드웨어도 후달리고 배포가 어렵고 사실 비용이다. 돈 따내기가 너무 귀찮다.

그래서 Docker를 기획할 때 다음을 고려하고 만들었다.

  1. 버젼 관리가 가능해야한다.
  2. 언제든지 배포가능
  3. 가능하면 LB 가능하게
  4. 표준화된 점포서버 배포가 가능하게
  5. 모든 TESTING 환경을 구현 가능하게
  6. 무중단 배포가 가능해야함. service tomcat restart 극혐. 넘 졸릴때 서버 작업하다가 service iptables restart 입력한다는 것을 습관적으로 tomcat 재시작해서 식은땀 1톤 흘린적 있다.
  7. 관리가 용이해야함
  8. 확장이 용이해야함
  9. 언제든 점포 서버를 생성 배포 가능하게 만들어야함
  10. 퍼포먼스 이슈가 없어야 함

그리고 나중엔

  1. 자동 배포 가능하게, 변경 사항이 생길시 자동으로 슝~ 생성되어서 슝 배포되어서 실제로 적용되게. 이게 될까? 요즘 최대 고민이다.

자 이걸 과연 Docker로 구성할수 있을 것인가?
에 대한 고민을 정말 심각하게 했다.

작년 말부터 기획을 하기 시작했고, 순차적으로 현재 진행중에 있다. 아마 될것 같다.. 되것지 뭐 안되면 걍 이대로 걍 사용하고. 사실 사용하는데 아무런 문제 없다. 문제 생기면 그냥 최신 커밋 파일로 붙여 넣어버림 된다.

Docker로 서비스를 기획 하는데 다음과 같은 요소가 도움이 되었다. 너무 당연한 이야기 이기도 하다.

A. 서비스에 대한 이해도
B. 서비스에 대한 이해도 + 인프라에 대한 아주 작은 이해
C. 서비스를 초기부터 전부 설치해본 경험
D. Bash 파일 공부
E. 서적 구입

A와 B로 일부로 두번 이야기하였다.
왜냐? 제일 중요한 부분이다. 내가 어떤 환경속에서 어떤한 서비스를 이용하고 있고 이중에 교집합을 찾는게 제일 중요하다. 본인의 경우에는
다음과 같이 컨테이너를 구성해서 표준화 각각의 컨테이너를 생성되게 구성하였다.

1. TOMCAT Container 
2. Postgre_dB Container
3. 저장소 Container

1번은 모든 서버가 동일하게 구성되어야 한다.
2번은 본부, 점포 두가지가 있다. 사실 상관없다. 걍 다 설치한 후에 시스템상에서 HQ -> Store로 저장만 해줌됨.
3번 또한 본부, 점포_POS, 점포_Report 가 있다.

1번은 변동이 없다. 고정된 값이다
2번은 초기 설정 후에 변동이 없다.
3번은 자주 변동이 있다.

HR은 버린다 . (이미 버렸다.)

DEV에 TESTING으로 구축 하고 CSR 서버에 실제 배포하는 서버로 이용한다.
개발자는 항상 최신 소스를 한개의 Container에 적용한다. (DEV에)
인프라에 대한 이해도는 포트를 매칭해주는 작업을 해줘야한다. 예를 들어 A,B,C 컨테이너가 있는데 이게 실제 물리 서버의 어떤포트로 들어오면 어디로 가는지 길을 알려줘야한다.

C. 서비스를 초기부터 전부 설치해본 경험.
Dockerfile 만들 때 가장 쉬운 방법은 container 하나 생성 뒤 초기에 서버 설치하듯 하나씩 설치 및 설정 하면서 이걸 적어두는 것이다. 그럼 매우 쉽게 가능하다. 나는 적어둔걸 하나씩 보면서 머릿속으로 재현하면서 짠다.
참고로 DB명이나, 암호 입력 등과의 작업도 모두 포함되어야한다. 이는 변수처리로 하면되는데 그건 실제 구축 후기에 대강 다뤄보기로한다.
본인이 키보드로 입력하는 모든 것을 적어두는 것이 가장 좋다. 만약에 제대로 생성 안되어 있음? 걍 컨테이너 삭제하고 다시 만듬되는거지뭐. 한 100개정도 만들어보다보니 성공한듯 싶다. (멍청함)

D. Shell(Bash)
Dockerfile은 Docker 이미지 설정 파일이다. 이게 Docker의 꽃 이자 핵심이다. 정말 지극히 개인적 생각임.
Docker는 해당 파일에 설정된 내용대로 Container를 생성한다.! 어려울것 없다. 심지어 코딩을 직접 못해도 된다. 구글형님이 도와준다. 구글링하고 본인 서비스에 맞게 수정 하면 된다. 경배하라 구글!

E. 서적 구입
인터넷으로 먼저 공부를 하고 서비스에 대한 흐름을 이해 한 뒤에 책을 구입한다. 진정 짱짱맨 책은 "가장 빨리 만나는 Docker" 걍 이거 한권이면 끝이다.

최종목표는 신규 점포 오픈시에 가장 최신 커밋된 어플리케이션으로, 한방에 점포_POS 서버와 점포_REPORT 서버를 구축 하는것. 그럼 내가 없어도 다른 팀원이 바로 바로 점포 서버 구축이 가능하니까 난 좀더 놀수 있겠지.

그렇다. 이 모든 공부는 사실 내가 좀더 열심히 놀기 위해서, 한번이라도 덜 소환 당하기 위해서, 시작하였다. 처음에는 사실 Excel로 작업계획서를 짜두고 이 문서를 따라 설정하게 진행 하였다. 버젼이 다르거나, 다른 패키지가 포함되어있는 OS를 설치한 경우 못하더라... 으렵다. 이래서 해외프로젝트가 어렵다 하나보다.

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.084
BTC 60911.74
ETH 1565.41
USDT 1.00
SBD 0.47