Infrastructure Architecture on Retail with docker
최종적으로 구축된 구성도다. 초기 부터 내가 모든 것을 설계 했다면 좀더 좋은 결과가 나왔을텐데 좀 아쉽다. 실제로 내가 관리 가능한 부분이 한정되었고 좀 더 개선 되었으면 하는 부분도 있지만 난 여기까지만
A. Main Service_Cloud Server(본부 서비스용)
I. LB_Load Balancing
Korea -VPN- All Branch
사용자가 접속할때 L4의 VIP로 접속 이때 Hash 알고리즘 선택
- Round Robin
- Least Connection
- Fastest Response Time
- Adaptive
- Fixed
- Hash
II. Dev Server : (개발 서버, 에러 재현, 최종 버전 이미지 생성용)
- 본부 시스템, 점포_POS, 점포_Report, 개발, DB#1~5 으로 총 9 개의 서비스각 각각 포트로 실행됨
- 추가 개발 소스파일은 git에 저장됨
- 추가 개발 완료 시점 마다 commit 후 git repository를 Dockerfile를 통해 이미지 YYMMDD_V1.0_CSR(No) 형태로 빌드함(재배포 개념으로 버전관리)
- 해당 이미지는 버전관리용으로 사용됨
- 상세 개발내역은 CSR(No)로 관리
- 실 서비스에 적용 뒤 문제가 생기면 전버전으로 Container 생성하여 rollback
- CSR에 등록된 Ticket을 토대로, 문제가 생긴 서버의 DB와 Volume Container를 Image로 생성하여 DEV로 전송하여 동일 현상을 재현
III. DB Replication
- Store Data가 Primary로 전달됨 -> NAS로 위치 변경하여 Primary, Secondary 에 마운트 시켜 해결
- Backup DB Dump/day 및 OS Backup/day
B. CSR Server_ Docker Images Storage
- CSR 서비스 운영
- Docker Image 저장소(용도별, 일자별 Docker image 관리)
- 표준 배포용 Dockerfile 관리
- Standard Web Server , DB Image 관리
- Application은 DEV에서 관리
C. Store Service
- POS와 Report 서버의 분리(두 서버 차이점은 소스코드 한줄 다름)
- Report 서버의 경우 POS서버는 실시간 Transaction용, 프로그래밍이 제대로 안되어 있어 메모리 이슈가 많이 생김. 큰 Transaction의 경우 모두 Report 서버를 사용.
- Report 서버의 경우 Docker를 통해 사용
- 차후 검증 완료 될시 POS 서버 또한 모두 Docker 사용 예정
- Final 컨셉의 경우 Nginx를 통해 LB를 사용하여 이중화 삼중화 작업을 하려고 했으나 CPU 이슈가 발생되어 Tunning중 이라하고 귀찮아서 안한다고 한다
- Report 서버에서 간혈적 문제 생김
- Backup DB Dump/day, Raid 1, DB Replication
D. Network & DR
- L3 장애시 : POS와 Server는 L2 통신 판매 문제 X(같은 subnet)
- L2 장애시 : 2중화를 통해 A장비 장애시 B 장비로 감 문제 X
- 인터넷 장애시 : FO 장애시 -> Radio 장애시 -> 4G(ISP와 터널링을 통해 기존 사용하던 IP 사용 단 안정적이지 못함)
- POS 서버 장애시 : 소프트웨어 장애시 SOP, 하드웨어 장애시 교체(대체 장비)
Hardware
a. Report 서버를 Read Only -> Read - Write 으로 변경하고, 전체 사용모드로 변경 코드 2줄 수정 필요
b. HDD 에러시 하드 찰탁 뒤 사용 : Raid 1이라 하나 장애나도 정상 작동
- 최근 Raid Controller 불량으로 서버 다운됨
Software
Monit이 일차적으로 확인하여 서비스 재시작 후 통보
- DB Lock 이슈의 경우 해결 못함_관리자가 수동 재부팅 필요
- 모든 장비에는 각각의 Data 포트가 있음 이는 각각 A와 B 스위치에 연결됨. -> 장애빈도가 거진 없기 때문에 장애시 수동변경
- Server <-> Switch 의 경우 Bonding으로 연결
적용이후 아직까진 별 탈 없이 운영되고 있음. 현재까지 무장애 운영 중
기존에 비해 점포서버 설치 시간이 획기적으로 줄어듬