이 글은 2019년 네이버 블로그에 포스팅 했던 내용을 리 포스팅 했습니다.
개요
최근 IT Infra 환경이 Cloud 환경으로 점차 변화되면서 응용 프로그램 역시 Cloud에 최적화된 아키텍처를 요구하고 있다. 이렇게 기존 Infra 환경에서 개발된 응용프로그램들을 Cloud에 최적화된 응용프로그램으로 Refactoring/Rebuilding 하는 것을 요즘 Application Modernization이라 하고 있다.
이 포스팅에서는 Application Modernization의 중심에 있는 Spring Boot, Git 그리고 최신의 IDE(Integration Development Tool) 기반 개발 환경을 이해하고 구성하는 것을 알아 보도록 하겠다.
개발환경
- Spring Boot
- Gradle
- Git
- InteglliJ
Local PC의 프로그램 소스는 Spring Initializr를 이용해 Gradle 기반 Spring Boot 웹 템플릿을 만든 후 이를 로컬 PC와 인터넷의 Git Hub에 본인 계정 레파지토리와 동기화 할 생각이다.
Spring Initializr를 통한 Spring Boot 프로젝트 템플릿 생성
먼저 Online상의 웹사이트인 http://start.spring.io의 Spring Initializr를 통해 빠르게 Spring Boot Web Application Template를 만들어 보도록 하자.
Spring Initializr를 이용하면 내가 원하는 Spring Boot 어플리케이션을 Dependency를 고려해 빠르게 Spring Boot기반 프로젝트 Template을 만들어 줄 수 있다.
웹브라우저를 통해 https://start.spring.io/를 접속하도록 한다.
1. Project: 프로젝트를 Maven기반 혹은 Gradle 기반으로 할 지 결정한다
→ 이 예제에서는 요즘 대세인 Gradle을 선택 하기로 한다.
2. Language: Language는 Java, Kotlin, Groovy를 지원 한다
→ 이 예제에서는 개발언어로 java를 선택한다.
3. Spring Boot: 사용하는 Spring Boot 버전을 선택한다.
→ 이 예제에서는 JDK 버전을 고려해 2.1.9를 선택하도록 한다.
4. Project Metadata : gradle 파일의 group 정보, artifact 정보 그리고 옵션으로 프로젝트 명, package명, 패키징 타입, 그리고 Java 버전을 선택한다.
→ 이 예제에서는 아래의 화면과 같이 입력하도록 한다.
5. Dependencies: Spring Initializr의 가장 핵심 기능으로 Spring Boot의 복잡한 Dependency를 자동으로 설정해 주는 기능을 한다. Spring Boot의 Web, Jpa, MVC 등등의 기능을 추가하고자 한다면 검색을 통해 선택하면 자동으로 Dependency를 선택해 준다.
→ 이 예제에서는 ‘web’하나만 검색해 Spring Web 만 선택하도록 한다.
6. Generate – Ctrl : 1 ~ 7까지 선택한 정보를 기반으로 Gradle 혹은 Maven 기반 프로젝트를 생성해 zip파일로 다운 로드 받을 수 있는 기능을 제공한다.
→ Generate – Ctrl을 클릭해 SpringInitializr.zip 파일을 다운로드 받도록 한다.
Spring Initializr를 통해 다운받은 SpringInitializr.zip 파일을 workspace 디렉토리에 SpringInitializr라는 이름으로 압축을 풀어놓도록 한다.
GitHub 가입 및 레파지토리(Repository) 생성
Github에 계정이 있다면 GitHub 가입은 건너 뛰고 다음부터 시작
인터넷의 GitHub 홈페이지(https://github.com/)를 방문한다. 홈페이지의 Sign-Up을 찾아 가입을 진행하도록 한다.
가입이 완료되었다면 이번 포스팅을 위한 레파지토리를 만들어 보도록 하자. 'New'를 클릭해 레파지토리(Repository) 생성 페이지로 이동하도록 한다.
레파지토리(Repository)에 필요한 항목들을 아래의 그림처럼 입력 한 후 ‘Create Repository’를 클릭하도록 한다.
Repository name은 편의상 Spring-Initializr-Demo라고 지었다. Description이야 알아 보기 쉽게 아무거나 입력하면 된다. 또한 다른 분들도 접속 할 수 있도록 public으로 권한을 설정했다. 모든 입력을 완료하면 ‘Create Repository’를 클릭해 레파지토리(Repository)를 완성한다.
레파지토리(Repository)가 완성되면 아래의 그림과 같이 완료되었다는 안내 페이지를 볼 수 있다.
여기서 중요한 항목은 방금 만든 Git 레파지토리(Repository)의 외부 접속 URL(위 그림의1.)과 이 레파지토리(Repository)를 로컬에서 동기화 하는 방법에 대해 안내한 Command Line(위 그림의 2.)이다.
원격 레파지토리(Repository)와 Local PC의 연동
만약 PC에 Git이 설치되어 있지 않다면 아래의 링크를 참조해 PC에 Git을 설치할 것
만약 git을 설치 후 처음 작업한다면 사용자 정보를 아래와 같이 입력해 git에 access 하는 사용자 정보를 입력하도록 한다.
이 설정은 git 설치 후 한번 만 진행하면 된다.
git config --global user.name "<사용자이름>" git config --global user.email <사용자 이메일> |
||
e.g.: git config --global user.name "Eui Deok Lee" git config --global user.email sharplee7@gmail.com |
앞서 레파지토리 생성 시 원격 레파지토리(Repository)에 접속하기 위한 URL과 접속을 위한 Command Line을 알아 보았다. 이제 이 Command Line을 이용해 앞서 로컬에 만들어 놓은 SpringInitializr 프로젝트를 연동하도록 하자.
PC의 커맨드 창을 열어 SpringInitializr 디렉토리의 ROOT로 이동한다.
Git 레파지토리(Repository) 생성시 보았던 Command Line 명령어를 순서대로 입력 하도록 하자.
1. echo “xxxxx” >> README.md
→ echo 다음의 문장의 내용을 리다이렉트(>>)해서 README.md라는 파일로 만든다는 내용이다.(이 명령어는 안 해도 상관없다.)
2. git init
→ 현재의 디렉토리에 local Git 레파지토리(repository)를 만들겠다는 의미이다. 명령어가 정상적으로 수행되면 .git 이라는 폴더가 만들어지며 이 디렉토리 내부에 버전관리 정보가 기록된다.
3. git add README.md
→ 방금 만든 README.md 파일을 Staging 상태로 만든다는 명령어이다.(Staging에 대해선 추후 다루겠다.)
4. git commit –m “커밋메시지”
→ git add를 통해 Staging 상태에 넣었던 파일을 로컬의 Git 레파지토리(Repository)에 등록하는 명령어이다. Commit이 되면 이때부터 Git 레파지토리(Repository)가 버전 관리를 하게된다.
5.git remote add origin https://github.com/<여러분의계정>/<여러분의레파지토리>.git
현재 만들어진 로컬의 Git 레파지토리(Repository)를 원격의 git hub에 내가 만든 레파지토리(Repository)와 연결한다. 이제부터 로컬의 레파지토리(Repository)와 원격의 Git Hub에 있는 내가 만든 레파지토리(Repository)는 연동되어 다른 사람들이 인터넷의 Git Hub에 있는 나의 레파지토리(Repository)에 있는 프로젝트 정보를 공유해서 사용 할 수 있게된다.
6. git push -u origin master
원격 레파지토리<origin>에 로컬 레파지토리의 <master>라는 브렌치의 모든 정보를 등록하겠다는 명령어다. 여기서 언급한 master 브렌치(branch)는 추후에 언급하도록 하겠다.
여기까지 완료되었다면 Local PC의 Git Repository(여기서는 C:/java-msa/workspace/SpringInitializr)와 원격 Git Hub의 레파지토리(Repository)(https://github.com/sharplee7/Spring-Initializr-Demo.git)가 연동 되었습니다.
지금까지 로컬 PC에 git 레파지토리 환경을 구성했다.
로컬 레파지토리(Repository)와 원격 레파지토리(Repository)간의 파일 동기화
현재 우리가 로컬 PC에 만든 git 레파지토리는 C:/java-msa/workspace/SpringInitializr/.git 이라는 폴더에 존재하고 있다. 여기서 실제 레파지토리는 .git 디렉토리 내부의 파일들인데 .git 디렉토리(레파지토리)가 관리하는 대상을 WorkTree라고 부른다. 여기에서는 SpringInitializr 디렉토리가 되겠네요, 이 WorkTree 디렉토리와 .git의 레파지토리가 서로 파일 정보가 같은지를 먼저 체크 해야 한다. 이 명령어가 status 입니다.
git status
위 명령어 수행 예를 보면 ‘On branch master’라는 상태에서 Untracked files(.git에 그 정보가 기록되지 않은 파일들이)들의 정보를 알 수 있다. 앞서 압축을 푼 이후 우리의 프로젝트 파일들은 아직 .git 레파지토리(Repository)에 staging 시키거나(add) 등록시키지(commit) 않았다.
git add <파일명> 혹은 git add .
앞서 git add README.md 명령을 수행한 것처럼 WorkTree(SpringInitializr) 내 Stage에 들어가지 않은 모든 파일들을 Staging 상태로 만들어 보자.
이 후 다시 git status 명령어를 입력하면
이번에는 commit되어야 될 파일들의 목록이 표시된다.
git commit –m “커밋메시지”
commit은 Staging 상태에 있는 파일을 실제 Git 레파지토리(Repository)에 입력하는 명령어라고 이야기 했었다. 이제 Staging 상태에 있는 WorkTree내 파일들을 실제 레파지토리(Repository)로 등록하자.
이렇게 완료가 되면 Staging 상태의 모든 파일들을 레파지토리(Repository)로 밀어 넣었다.
다시 WorkTree의 상태를 확인해 보겠습니다.
지금까지의 작업으로 WorkTree(SpringInitializr)내 모든 파일들과 레파지토리(Repository)(.git)의 모든 파일이 동기화 되었다. 이제는 로컬 PC의 .git 레파지토리(Repository)와 원격 git-hub의 레파지토리(Repository)를 동기화 해보자.
git push -u origin master
앞서 local PC의 git repository의 현재 브랜치인 master를 원격의 git(origin)과 연동시켰으므로 git push 명령을 통해 로컬(master)의 업데이트된 파일(-u)을 모두 원격(origin)의 레파지토리로 업로드 시키자.
이때 원격 레파지토리(Repository)에 대한 사용자 계정(email)과 패스워드를 묻는 창이 뜨게 되면 해당 정보를 입력하신 후 OK를 클릭하면된다.
모든 데이터가 모두 업로드 되었다.
인터넷의 github에 있는 본인의 레파지토리(Repository)를 들어가 보면 아래와 같이 Local PC의 모든 파일들이 업로드 되어 있는 것을 확인 해 보실 수 있다.
아래의 2부에 계속
'Application Modernization > DevOps' 카테고리의 다른 글
GitHub, Code Build 그리고 CodePipeline를 이용한 간단한 배포 실습 (0) | 2022.03.21 |
---|---|
Git, gradle, Spring Boot 개발 환경 구성 ... 2/2 (0) | 2021.09.23 |
Gradle proxy 설정 (0) | 2021.06.28 |
Gradle init type 알아보기 (0) | 2021.06.28 |
Gradle, Github, Eclipse 그리고 Web Application 연동 (0) | 2021.06.28 |