본문 바로가기
WEB&WAS/Apache Tomcat

WAS) WAS에 대한 이야기 (7) - 개발 소스 관리

by LILO 2022. 1. 2.
반응형

INTRO

WAS에 소스 배포 할 때 WAR, JAR 등 소스 반영 아카이브 형태의 파일로 배포합니다. 

이 소스의 히스토리가 하나 둘 씩 모이다 보면 일반적인 관리 형식으로는 관리하는 것이 사실 불가능합니다.

 

이러한 문제 때문에 개발 환경에서는 이러한 소스를 관리하기 위해 형상 관리 툴이라는 것을 도입하게 됩니다.

그런데 "WAS를 이야기 하다가 왜 갑자기 개발 소스 관리 이야기를 하고 저는 엔지니어 인데요..?"

 

시스템 운영이 되고 있는 서버를 보면 결코 Web, WAS, DB 서버만 있다고 모든게 정상적으로 운영되지는 않습니다.

 

분명 이러한 것들을 개발할 수 있는 환경도 있어야되고 개발 소스 코드에 대한 히스토리 관리도 되고 있어야 되기 때문에 운영자 혹은 엔지니어에게도 해당 분야에 대한 지식이 요구되고 있습니다.

 

이러한 지식이 계속 쌓이다 보면 형상 관리에 대한 개념이 잡히고 자동 배포에 대한 파이프 라인을 구축하고 싶다는 생각이 들테고 이러한 생각들이 하나 둘 씩 문화로 되어 간다면 소스의 지속적인 통합과 지속적인 배포가 되면서 개발자는 개발에 더 집중할 수 있게 도와주는 문화가 만들어지겠다는 생각이 듭니다. (CI/CD, DevOps 관련)

 

 

형상 관리(SCM, Software Configuration Management)

형상 관리란 개발 과정에서 변경 사항을 관리하기 위한 일련의 활동을 말합니다.

 

아래의 박스는 형상 관리의 특징입니다.

- 소스의 변화를 지속적으로 관리
- 소스를 버전 별로 관리할 수 있어서 롤백, 수정 등에 유리함
- 어떤 작업을 통해 수정을 한 것을  알 수 있기때문에 소스 코드 통합 및 유지보수에도 유리함
- 권한 부여도 가능하기 때문에 전략적으로 운영이 가능함
- 동시 작업 가능 

이러한 형상 관리 툴에는 SVN, CVS, Git 등이 포함됩니다.

 

해당 내용은 간단하게만 설명하고 넘어갈 것입니다. 추가로 궁금하신 점은 구글에 정리가 잘 된 레퍼런스가 많기 때문에 "형상 관리" 등과 같은 키워드를 통해 찾아보시면 좋을 것 같습니다.

 

SVN은 중앙 서버에 소스 코드와 히스토리를 저장하는 중앙집중식 버전 관리 시스템입니다.

Git은 소스코드를 여러 PC와 저장소를 통해 분산해서 저장하는 분산형 관리 시스템입니다.

 

Git이 독립적인 환경을 갖출 수 있으므로 유연성이 뛰어난 형상 관리 툴이라는 생각이 듭니다.

(Commit도 자유롭고 중앙 서버가 장애날 경우 각자의 저장소가 존재한다면 빠른 시간 내에 복구 가능)

 

 

아래는 GitHub의 커밋 히스토리 관련 기능입니다.

정말 깔끔하게 관리가 되기 때문에 관리 포인트에서도 장점을 가집니다.

 

그런데 커밋은 무슨 역할을 하나요?

예를 들어 A 코드에 system.out.println("Hello, World");를 system.out.println("Hello, LILO");로 변경하려고 합니다.

이러한 경우에는 작업물의 변화를 메세지와 함께 기록하여 하나의 포인트를 만드는 커밋이라는 것을 사용하게 됩니다.

 

커밋 메세지를 아래와 같이 남겨서 다른 사람도 이해할 수 있게 기록하면 좋을 것 같습니다.

Test: 테스트 Print 내용 변경 테스트

Print 내용 변경
- system.out.println("Hello, LILO"): Hello World에서 Hello LILO로 변경함

 

폐쇄망에서는 GitHub를 어떻게 운영하나요?

GitLab, GitHub Enterprise를 이용하여 비슷한 방식으로 운영하면 될 것 같습니다.

 

그러면 지속적인 통합은 GitLab으로 했는데 지속적인 자동화된 배포는 누가 해주나요?

일반적으로 Bare Metal, VM 환경에서는 Jenkins라는 오픈소스를 많이 사용합니다. (WAS 이용)

최근들어 Kubernetes가 도입되면서 Jenkins도 물론 많이 사용하지만 CD툴로 Argo도 많이 각광 받고 있습니다.

반응형