Ansible을 왜 하게 되었는가?
안정성과 효율성이 뛰어나기 때문이다. 기존에는 대부분 프로젝트를 배포하고 구축할 때 수동으로 진행했었다. 수동으로 배포를 진행하다보면 많은 문제가 발생했다.
- 시간이 오래걸린다.
예를 들어 서버에 웹서버를 띄우고 프론트, 백앤드 어플을 배포한다고 가정해보고 순서를 나열해본다. 간단하게 나열했는데도 많은 task가 필요하다.- 먼저 필요한 패키지 설치 (nginx, node, jdk)
- nginx.conf 설정
- node 버전 설정 (nvm 설치)
- jdk 설치
- gradle 빌드
- 사람이기 때문에 실수할 수 있다.
나는 기계가 아니다. 그렇기 때문에 실수를 할 수도 있다. 물론 스크립트를 정리해두고 하나하나 실행하면 실수할 확률이 줄어들지만 그래도 실수할 가능성이 존재한다. - 노드가 두개 이상이라면?
구축해야할 노드가 두개 이상이라면? 1번과 같은 작업을 2번 이상 반복해야 한다. 그렇게 되면 시간은 더 오래걸리고 실수할 확률은 더 높아진다.
이러한 문제를 해결하기 위해, 소스 코드로 배포 관리할 수 있는 솔루션을 찾게 되었고 Ansible을 사용하게 되었다.
내가 느낀 Ansible 장점
Ansible을 경험하면서 느꼈던 장점을 적어본다.
- 소스 코드로 관리할 수 있다.
YAML 을 사용하기 때문에 문법이 간단하다. 그리고 코드로 관리하기 때문에 변경이력을 쉽게 확인할 수 있다. 일단 코드로 관리하기 때문에 스크립트보다 깔끔하다. - 시간이 단축된다.
기존 수작업으로 배포했을 때보다 시간이 단축되었다. 처음에 솔루션을 익히는 시간이 조금 걸리지만, 명령어 한번이면 서버에 배포가 완료 된다. 그리고 한번 코드로 작성해두면 다른 프로젝트에도 쉽게 적용할 수 있다. - task마다 모듈화 해서 관리할 수 있다.
Ansible은 다양한 모듈을 제공한다. 그리고 해당 모듈을 커스텀할 수도 있다. 우리 회사는 nginx, jdk, mysql을 많이 쓰기 때문에 패키지마다 모듈화해서 프로젝트마다 재사용도 가능하다.
물론 단점도 존재한다. 처음에 입문하기가 어렵다는 것이다. 그렇지만 GPT를 통해 쉽게 익힐 수 있기 때문에 쉽게 익힐 수 있다.
기존 배포 방법과의 차이점
기존에 진행했던 배포방법과의 차이점을 정리해보았다.
- 기존 배포 방법
- 수작업으로 서버 환경을 설정하고 구축해야 하기 때문에 시간이 오래 걸린다.
- 스크립트를 작성해서 배포를 진행하거나 직접 스크립트를 실행 하기 때문에 실수할 가능성이 높다.
- 동일한 작업을 여러 환경에서 반복해야 하는 경우 생산성이 낮다.
- Ansible 활용 배포 방법
- YAML 파일만 작성하면 동일한 작업을 여러 서버에서 동시 실행 가능하다.
- 스크립트 파일로 관리하지 않고 Git을 활용해 코드로 관리할 수 있어 변경 사항 추적이 용이하다.
- 상태 관리가 자동화되어 복잡한 환경에서도 안정적으로 배포 가능하다.
소감
서비스 규모가 커지게 되면 멀티로 서버를 관리해야 하게 된다. 그럴때 쉽게 배포를 진행하기 위해서 Ansible과 같은 솔루션을 사용하는 것은 필수인 것 같다.
'DevOps' 카테고리의 다른 글
[DevOps] 배포 전략에 대해서 알아보자 (3) | 2025.02.05 |
---|---|
[Ansible] 어플리케이션 배포 자동화 (2) | 2024.12.10 |
[Docker] 도커 배포 vs 일반 배포 (6) | 2024.07.24 |
[Jenkins] Pipeline으로 배포 자동화 (2) (2) | 2024.05.09 |
[Jenkins] Spring Boot Application 배포 자동화 (1) (1) | 2024.05.09 |