Atlassian에서 SonarQube와 Bamboo를 사용하고 있어 개념들을 찾아봤다.
sonarqube
소나큐브는 20개 이상의 프로그래밍 언어에서 버그, 코드 스멜, 보안 취약점을 발견할 목적으로 정적 코드 분석으로 자동 리뷰를 수행하기 위한 지속적인 코드 품질 검사용 오픈 소스 플랫폼이다.
소나큐브는 중복 코드, 코딩 표준, 유닛 테스트, 코드 커버리지, 코드 복잡도, 주석, 버그 및 보안 취약점의 보고서를 제공하는 정적 코드 분석 도구이다.
정적 프로그램 분석은 실제 실행 없이 컴퓨터 소프트웨어를 분석하는 것을 말한다. 대부분의 경우에 분석은 소스 코드의 버전 중 하나의 형태로 수행되며, 가끔은 목적 파일 형태로 분석된다. 이에 반하여 실행 중인 프로그램을 분석하는 것을 동적 프로그램 분석이라고 한다.
SonarQube에서 관리해주는 소프트웨어 품질 정보
- Code Smell : 심각한 이슈는 아니지만 베스트 프렉티스에서 사소한 이슈들로 모듈성(modularity), 이해 가능성(understandability), 변경 가능성(changeability), 테스트 용의성(testability), 재사용성(reusability) 등이 포함된다.
- Bugs : 일반적으로 잠재적인 버그 혹은 실행시간에 예상되는 동작을 하지 않는 코드를 나타낸다.
- Vulnerabilities : 해커들에게 잠재적인 약점이 될 수 있는 보안상의 이슈를 말한다. SQL 인젝션, 크로스 사이트 스크립팅과 같은 보안 취약성을 찾아낸다.
- Duplications : 코드 중복은 코드의 품질을 저해시키는 가장 큰 요인 중 하나이다.
- Unit Test : 단위테스트 커버리지를 통해 단위 테스트의 수행 정도와 수행한 테스트의 성공/실패 정보를 제공한다.
- Complexity : 코드의 순환 복잡도, 인지 복잡도를 측정합니다.
- Size : 소스코드 사이즈와 관련된 다양한 지표를 제공합니다.
https://sonarqubekr.atlassian.net/wiki/spaces/SON/pages/426921 참고
아래 링크에는 SonarQube를 적용하고 분석한 내용에 대한 과정이 잘 정리되어 있다.
https://brunch.co.kr/@joypinkgom/43
bamboo
Atlassian Bamboo는 Jenkins와 같은 CI(Continuous Integration)서버이다. 소프트웨어 개발에 있어서 빠질 수 없는 CI서버는 전체 개발라인 일명 파이프라인에 자동화된 배달역할을 한다. 예를 들어 어느 모듈이 개발완료되어 소스관리 리포지트리에 등록을 하게 되면 CI서버는 리포지트리를 감시하여 자동으로 빌드하고 테스트하여 각 환경에 맞게 디플로이(배포) 작업을 수행하게 된다.
장점
손쉽고 직관적인 UI를 갖고 있고 상용 SW 에 걸맞게 예쁜 외양을 자랑한다.atlassian 제품군과 완벽한 통합 제공. JIRA 의 대쉬보드나 confluence의 Page에 bamboo build chart 를 붙일수도 있고 JIRA 의 특정 이슈와 관련된 build 내역을 조회하는 등 atlassian 제품을 기존에 사용하고 있다면 각 제품군을 통합해서 더욱 유기적으로 사용할 수 있다.MS의 Visual Studio, Mac OSX 의 XCode 등 Java 이외의 개발 환경을 지원한다. ( Visual Studio 지원은 아직 그리 잘 돌아가지 않고 복잡해서 시행착오를 좀 거쳐야 하고 써본 경험상 bamboo 에 붙이는건 그리 추천하지 않는다.)Jenkins 에 비해 프로젝트 권한 설정이나 분산 빌드가 아주 간편하다.Remote Access API 를 제공하므로 다른 솔루션에서 연계하여 기능 확장이 가능하다.
단점
제법 비싼 비용이 발생한다. (build 를 할수 있는 remote agent 수 따라 라이센스 비용이 책정되는데 5 remote agent 가 $2,200 이다. 1년후마다 매년 구입가의 50% subscription 비용 추가 발생.)Project, Plan, Stage, Task 의 개념이 복잡해서 익숙해지고 제대로 쓰려면 약간의 시간이 필요하다.
Jenkins와 비교
장점
무료이고 Reference 및 사용자가 많고 정보가 많은 편이다. (openstack의 CI 에도 적용되어 있다.- https://jenkins.openstack.org/)Hudson core 개발자가 jenkins 를 시작했고 주요 플러그인 개발자도 jenkins 로 전환해서 개발 속도가 빠르고 플러그인 지원이 좋은 편이다.설치 및 사용이 간단하다. 실제로 maven 으로 build 가 구성되어 있다면 jenkins 설치후 project 만드는데 얼마 안 걸린다.Remote Access API 를 제공하므로 다른 솔루션에서 연계하여 기능 확장이 가능하다.
단점
프로젝트 별 보안 및 권한 설정등이 불편하다. (bamboo 에 비해)JIRA나 redmine 등 Issue tracking 과 연계가 불편하거나 완벽하지 않다.
참고
https://www.lesstif.com/software-architect/jenkins-bamboo-15269892.html
https://koreabigname.tistory.com/11
'Etc > Study' 카테고리의 다른 글
취업준비 도움 자료 (0) | 2022.01.06 |
---|---|
[CS]UML과 Diagram (0) | 2021.10.25 |