위 그림은 DevOps 수명 주기 전반의 도구 사슬을 표현하였습니다. 도구 사슬의 의미는 각 영역이 별개가 아니라 도구 간 연계를 통해서 시너지를 이룬다는 측면을 강조한 것입니다. 각 영역별로 오픈소스 위주의 도구를 나열하였습니다.
계획 영역에서는 협업, 일감 관리를 위한 도구를 주로 사용합니다. Redmine이 잘 알려진 오픈소스 도구이며, 실제 기업 환경에서는 상용 도구를 주로 사용하기도 합니다. 개발 영역에서는 코드 버전 관리를 위한 도구를 주로 사용합니다. 과거에는 Subversion이라는 전통적인 도구를 많이 사용했지만, 최근에는 분산 환경에 적합한 Git을 많이 사용합니다. 빌드 영역에서는 Compile, Packaging, 단위 Testing을 위한 도구를 사용합니다. Maven은 가장 유명한 Java용 빌드 도구입니다.
테스트 영역에서는 정적 분석, UI 테스트, 통합 테스트, 성능 테스트 등 다양한 테스팅 도구를 사용합니다. SonarQube는 가장 많이 사용하는 정적 분석 도구입니다. 릴리즈/배포 영역에서는 컨테이너를 통해 어플리케이션을 관리할 수 있는 도구를 주로 사용하게 됩니다. 현재는 Docker가 가장 널리 사용되고 있습니다. 운영 영역에서는 Container Orchestration 도구, 그리고 인프라를 토대로 다룰 수 있는 도구를 사용합니다. 모니터링 영역에서는 로깅을 관리하고 가시화하는 대시보드 도구를 주로 사용합니다.
이클립스
Eclipse는 가장 유명한 오픈소스 프로젝트 중 하나입니다. 가장 강력하고 대중적인 통합 개발 환경 도구입니다. Java를 포함하여 다양한 언어를 지원합니다. 또한 다양한 플러그인을 통해서 확장된 기능을 사용할 수 있습니다.
Spring Tool Suite는 Eclipse를 기반으로 해서 기능을 확장한 도구입니다. Spring Boot라는 Saas 서비스 개발에 용이한 기술을 쉽게 개발할 수 있도록 지원합니다.
Git
Git은 소스코드 관리를 위한 분산형 버전 관리 시스템입니다. 기존에는 중앙통제형 버전 관리 시스템인 Subversion을 주로 사용했지만, 네트워크가 작동되지 않는 환경이나 분산 환경에서 막강한 Git이 대중화되면서 대부분의 프로젝트는 Git을 사용하고 있습니다. GitHub는 Git을 기반으로 한 글로벌 Git 저장소 서비스입니다. 쉽게 생각해서 GitHub은 Git의 Saas 버전이라고 생각하시면 됩니다.
많은 오픈소스 프로젝트들이 GitHub를 통해서 관리되고 있습니다. GitHub은 단순한 소스코드 저장소가 아니라 개발자 커뮤니티의 중심이라고 볼 수도 있습니다.
아파치 메이븐
Apache Maven은 Java 소스코드를 배포용 산출물로 빌드하기 위한 도구입니다. 소프트웨어 프로젝트 객체 모델이라는 것을 사용하며, 기존의 도구보다 훨씬 더 편리하고 직관적으로 사용할 수 있습니다. 개발자를 힘들게 했던 의존성 관리, 라이브러리 관리와 Compile, Packaging, Test 수행을 쉽게 해줍니다.
젠킨스
Jenkins는 지속적 통합을 자동화해주는 가장 유명한 도구입니다. 빌드-테스트-배포를 자동화해주는데, 웹 인터페이스를 통해 간편하게 실행하고, 그리고 플러그인을 통해 확장된 기능을 수행할 수 있습니다.
소나큐브
SonarQube는 소스코드 정적 분석을 통해 품질 대시보드를 제공하는 도구입니다. 지속적 통합과 연계하여 소스코드 품질을 점검할 수 있습니다. 소스코드 inspection을 통해서 개발자에게 더 나은 코딩을 가이드해주며, 이를 통해 개발자 역량 및 소스코드 품질을 향상시킬 수 있습니다.
onarQube의 대시보드는 품질 지표를 직관적으로 제공해주기 때문에 개발자들뿐 아니라 관리자에게도 매우 유용한 도구입니다.
Docker
Docker는 컨테이너 기반으로 어플리케이션을 쉽게 관리할 수 있는 가상화 플랫폼입니다. evOps와 관련해서 가장 빠르게 발전하고 있는 기술로서 많은 기능들이 확장되었습니다.
컴퓨팅 환경은 개발, 테스트, 운영 등 상황에 따라 매우 다양한 구성을 가집니다. 여기에 관리 대상 숫자가 늘어나게 되면 이를 유지, 관리하는 것이 매우 어렵습니다.
가상화 기술을 활용하면 동일한 환경, 구성을 유지하여 쉽게 관리할 수 있습니다. 가상머신을 사용하는 경우에는 가상머신 설치 때문에 무겁고 성능이 저하되는 문제가 있었습니다.
Docker는 가상 머신을 사용하는 방식보다 가벼운 리눅스 컨테이너 방식을 사용해서 성능 저하 문제를 풀었습니다.
'SW > DevOps' 카테고리의 다른 글
DevOps : 소스코드관리 : Git 기능 개념 (0) | 2019.11.18 |
---|---|
DevOps : 소스 코드 관리 : 기본 개념 (0) | 2019.11.17 |
DevOps : 개발환경구축 : 일반적인 방법 (0) | 2019.11.16 |
DevOps : 사례, 예시 (0) | 2019.11.11 |
DevOps 공정 : 프로세스 개념, 특징 (0) | 2019.11.09 |