## 서버 한 대 뚝딱? '프로비저닝'이 뭔가요?
CI/CD를 공부하다 보면 '프로비저닝(Provisioning)'이라는 단어를 자주 접하게 됩니다. 왠지 어려워 보이지만, 사실 개발자들에게는 아주 밀접해야할 개념입니다
---
### 1. 프로비저닝, 한 마디로 정의하면?
프로비저닝은 쉽게 말해 "사용자의 요구에 맞춰 IT 자원을 준비하고, 즉시 사용할 수 있는 상태로 만드는 과정"을 의미합니다.
과거에는 서버 한 대를 준비하려면 물리적인 하드웨어를 사고, 케이블을 꽂고, 운영체제(OS)를 직접 설치해야 했죠. 하지만 지금은? 클릭 몇 번이나 코드 한 줄이면 모든 준비가 끝납니다. 이처럼 '무대를 세팅하는 전 과정'을 프로비저닝이라고 부릅니다.
### 2. 프로비저닝에도 '종류'가 있다!
어떤 자원을 준비하느냐에 따라 이름이 조금씩 달라집니다.
* 서버 프로비저닝: 서버를 설치하고 OS와 소프트웨어를 설정해 서비스 준비를 마치는 과정
* 사용자(계정) 프로비저닝: 신입 사원에게 이메일, 그룹웨어 접근 권한을 자동으로 부여하는 것
* 네트워크 프로비저닝: IP 할당, 방화벽 설정 등 통신 통로를 만드는 작업
* 스토리지 프로비저닝: 데이터를 저장할 공간을 확보하고 관리하는 과정
---
### 3. 왜 다들 '프로비저닝 자동화'를 외칠까?
예전처럼 수동으로 하지 않고 자동화를 선택하는 데는 명확한 이유가 있습니다.
1. 압도적인 속도: 며칠 걸릴 서버 세팅을 단 몇 분 만에 끝낼 수 있어요.
2. 실수 방지: 사람이 일일이 입력하다 생기는 '휴먼 에러'를 획기적으로 줄여줍니다.
3. 유연한 확장성: 사용자가 몰릴 때 자동으로 서버를 늘려주는 '오토 스케일링'도 이 자동화 기술 덕분입니다.
---
### 4. 프로비저닝 vs 배포, 헷갈리지 마세요! 💡
많은 분이 배포(Deployment)와 헷갈려하시는데요, 이렇게 비유하면 쉽습니다.
* 프로비저닝은 '무대'를 만드는 일: 서버를 사고, OS를 깔고, 네트워크를 연결해 프로그램이 돌아갈 환경을 만드는 단계입니다.
* 배포는 '배우'를 올리는 일: 만들어진 무대 위에 실제 코드(프로그램)를 올려 실행시키는 단계입니다.
> 최근에는 클라우드 덕분에 "환경 생성(프로비저닝) + 코드 업로드(배포)"가 하나의 흐름으로 묶여서 돌아갑니다.
---
### 5. 현대 개발의 핵심, CI/CD와 프로비저닝
요즘 개발 현장에서는 CI/CD 파이프라인 안에 프로비저닝이 자연스럽게 녹아들어 있습니다.
| 단계 | 역할 | 주요 도구 |
| --- | --- | --- |
| CI (Build/Test) | 코드 검사 및 실행 파일 생성 | Jenkins, GitHub Actions |
| Provisioning | 인프라(서버, DB) 자동 생성 | Terraform, CloudFormation |
| Configuration | 소프트웨어(Java, Nginx 등) 설정 | Ansible, Chef |
| CD (Deployment) | 최종 코드를 서버에 배포 | Kubernetes, Docker |
### 6. 요즘 트렌드: "코드 한 줄로 인프라까지!"
이제는 IaC(Infrastructure as Code, 코드형 인프라) 시대입니다. 인프라 팀과 개발 팀의 경계가 무너지고 있죠.
1. 개발자가 코드를 올리면(Push)
2. 자동으로 테스트용 서버가 만들어지고 (프로비저닝)
3. 그 위에 코드가 깔려서 테스트가 돌아가고 (배포)
4. 테스트가 끝나면 서버가 스스로 사라집니다.
---
### 마치며
결국 프로비저닝은 요리를 하기 전 '재료를 사고 손질해서 불까지 켜두는 과정'과 같습니다. 이 과정이 자동화될수록 개발자는 오로지 '요리(코드)'에만 집중할 수 있게 되는 것이죠.
댓글
댓글 쓰기