👨🏻 : 여태 개발한거를 고객한테 나중에 넘기기 전에 테스트 데이터를 넣으면 안되니까 정리해야 하잖아요. 이제 그걸 해야해.. 테이블도 정리를 해야하고.. DB를 백업해놓고 클렌징 한 다음에 DB 생성부터 다시 하는 도커 이미지를 새로 만들어야 하는데 $(*$)*#!*!@##.... 💁🏻♀️ : ... ? |
여태 코드 작성 및 작성된 코드 배포까지만 해보고 그다음 과정은 신경 쓰지 않아도 됐던 나는 당연히 다 알아듣지 못했다.
대충 이해한 것은 여태 화면은 vue js, 서버는 java spring, DB는 postgre로 작업한 다음 하나의 도커 이미지로 만들어서 테스트 환경에 배포해 테스트해왔으나, 이제 개발 막바지 단계이니 테스트에 사용했던 데이터는 지우고 배포 준비를 해야 한다는 것.
그래서 GPT와 대화 후 정리한 솔루션 배포를 위한 준비사항들을 정리해 보았다.
솔루션 판매를 위한 준비 과정
개발한 솔루션을 고객이 쉽게 사용할 수 있도록 데이터 정리 및 설치 과정을 거쳐야 한다.
이는 크게 1️⃣ 데이터 정리(클렌징) -> 2️⃣ 환경 준비 -> 3️⃣ 도커 이미지 생성 -> 4️⃣ 배포의 순서로 진행된다.
1️⃣ 데이터 정리 (클렌징)
불필요한 데이터를 정리하고, 고객 환경에서 깨끗한 상태로 설치 가능하도록 준비하는 과정
- 개발 환경에서 사용한 테스트 데이터, 로그, 중복 데이터 삭제
- 사용하지 않는 테이블이나 컬럼 정리
- 기본적으로 제공해야 할 초기 데이터 선별
💡남길 테이블과 삭제할 테이블은 리스트로 문서화하고 이해 관계자와 검토 후 확정하는 것이 좋다.
💡데이터 클렌징을 하는 이유: 불필요한 데이터 제거, 데이터 정합성 유지, 보안 및 민감 데이터 제거
💡전체 DB 백업을 위한 명령어(Bash Shell / CMD 등에서 실행)
pg_dump -U DB사용자명 -h DB서버호스트명 -d 백업할DB명 > 백업파일명.sql
// 명령어 실행 시 현재 디렉토리에 백업파일명.sql 파일이 생성되며, 복원 시 psql 명령어 사용.
// psql -U DB사용자명 -h DB서버호스트명 -d 복원할DB명 < 백업파일명.sql
2️⃣ 환경 준비
고객이 사용할 수 있도록 애플리케이션을 구성하고 DB 스크립트를 준비하는 과정
- DB 접속 정보, API 키 등 고객별 환경 변수 설정
- DB 초기화 스크립트 준비 (schema.sql, data.sql)
- 프론트엔드와 백엔드를 하나의 도커 이미지에서 실행할 수 있도록 준비
3️⃣ 도커 이미지 생성
프론트엔드(VUE) + 백엔드(JAVA) + DB를 하나의 도커 이미지로 패키징하여 배포 가능하도록 구성하는 과정
- Dockerfile(설정파일)을 작성하여 필요한 환경을 구성
- 프론트엔드(.html, .css, .js)와 백엔드 빌드(.jar) 후 도커 컨테이너에서 실행
- 초기 데이터 로드 스크립트를 포함한 DB 설정
- 도커 이미지 빌드
💡 도커 이미지란 무엇일까?
도커(Docker) 이미지는 애플리케이션과 그 애플리케이션이 실행되는 환경을 하나로 패키징 한 파일로, 프론트 + 백엔드를 포함해 어떤 환경에서든 동일하게 실행될 수 있도록 만든 컨테이너의 기반이 되는 파일이다.
- 도커 이미지의 특징 :
OS, 라이브러리, 설정 등을 포함하고 있어 실행 환경이 독립적이며, 가상 머신(VM) 보다 가볍다. 또, 한 번 만든 이미지를 여러 환경에서 배포 및 실행이 가능하다.
- 도커 이미지 vs 도커 컨테이너 vs 도커파일 :
도커 이미지: 실행 가능한 정적인 파일
도커 컨테이너: 이미지에서 생성된 실행 중인 애플리케이션
도커파일: 도커 이미지를 생성하기 위한 설정파일
우리가 작업한 Vue(프론트) + Java(백엔드) + DB를 포함한 하나의 도커 이미지를 만들면 고객 환경에서 쉽게 애플리케이션을 실행할 수 있다.
❓여기서 궁금증. 설명만 들으면 .exe 파일과 비슷한 느낌인데 도커 이미지가 유사한 개념이라고 이해해도 되는 걸까?
답은 No!
.exe는 특정 프로그램을 실행하기 위한 파일이라면 Docker 이미지는 프로그램 실행에 필요한 모든 환경 (운영체제, 라이브러리 등)을 포함한 패키지로, "독립 실행이 가능한 미니 OS + 프로그램" 개념이다.
개념 | .exe 실행파일 | Docker 이미지 |
목적 | 특정 프로그램을 'Windows'에서 실행하기 위해 사용 | 프로그램을 실행할 수 있는 전체 환경을 패키징하여 제공 |
운영체제/이동성 | Windows 전용 (OS 종속적) | OS에 관계없이 컨테이너로 실행 가능 (Windows, Linux, Mac 등) |
구성요소 | 실행파일 + 라이브러리 | 실행파일 + OS + 라이브러리 + 환경설정 포함 |
설치방식 | 사용자가 'setup.exe' 실행 후 step을 진행하며 설치 | docker run 명령어를 이용하여 한 번에 실행 가능 |
4️⃣ 배포 및 고객 환경 설정
고객이 쉽게 설치하고 사용할 수 있는 배포 파일을 제공
- 도커 이미지를 Docker Hub나 프라이빗 레지스트리에 업로드
- 고객이 이미지를 다운로드하고 실행할 수 있도록 가이드 제공
- docker run 실행 후 정상적으로 동작하는지 검증
* 솔루션 판매 시 원격으로 배포(Docker 이미지를 제공하거나 바로 사용가능한 클라우드 서비스 제공)하는 경우도 있고 직접 고객의 사이트로 나가서 설치와 환경설정을 해주는 경우도 있다. (주로 고객의 IT 환경이 폐쇄적이거나 보안 이슈가 있는 경우)
'열심히 직장인 > Hello World' 카테고리의 다른 글
글또 10기를 마무리하며 (1) | 2025.03.30 |
---|---|
Java의 ThreadLocal은 무엇이고 왜 사용할까? (0) | 2025.02.27 |
Spring과 Spring MVC, 그리고 Spring Boot (1) | 2025.02.16 |
DeepSeek(딥시크)란? 개인정보 유출 우려나 검열 없이 딥시크 사용하는 법 (0) | 2025.02.02 |
[vue-ganttastic] 무료 간트 차트 생성 라이브러리 (vue3) (1) | 2025.01.19 |
방통대 컴퓨터 과학과 3학년 2학기 후기 (선형대수/자료구조/컴퓨터구조/UNIX시스템/멀티미디어시스템/대학영어) (1) | 2024.12.30 |
Apache POI 라이브러리를 이용해 Java에서 엑셀 파일 만들기 (DB to File) (1) | 2024.12.30 |
JAVA로 파일처리 하기 - 스트림(STREAM)의 이해 (DB 데이터로 엑셀 파일 만들기) (0) | 2024.12.22 |
서버와 컨테이너, 그리고 POD (CI/CD 파이프라인 흐름) (4) | 2024.11.13 |
브라우저 디버깅을 위한 크롬 개발자 도구 사용하기 - console.log에서 벗어나자! (2) | 2024.11.06 |