일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 1차원 DP
- 2차원 dp
- 99클럽
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- ApplicationEvent
- assertThat
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
- Callback
- case when
- Today
- Total
기록
SpringBoot Azure window instance에 배포하기 본문
시작하면서
최근에 토이프로젝트로 전화번호를 수집해서, 문자를 보내는 sms 서버를 구현하였다. 이 과정에서, 검증용 서버를 빠르게 띄워달라는 요구가 있었고, 이를 위해서 최근에 사용해봤던 Azure를 사용해 빠른 배포를 해보았다.
Azure window instance
계정을 만들고, 로그인을 하면 다음과 같은 화면을 볼 수 있다.
관리자 계정은 인스턴스에 접근하기 위해서 필요한 정보로, 어떤 정보를 입력했는지 기억해 두어야 한다. 나머지 필요한 정보를 설정하고 검토 후 설정을 완료한다. 이후 왼쪽 연결탭에서 RDP 파일을 다운로드 받을 수 있고, 이를 통해 VM을 통해 인스턴스에 직접 접속할 수 있다.
install java
- check version
해당 프로젝트는 Java17를 사용하고 있다.
java {
sourceCompatibility = JavaVersion.VERSION_17
}
- install jdk
인스턴스 안에 jdk를 설치한다. jdk 17을 검색하면 oracle 페이지가 나오는데, 그 중에서 window 64bit를 다운받아서, 설치한다.
- 환경변수 설정
jdk가 설치된 경로를 JAVA_HOME으로 설정하고, PATH에 등록한다.
cmd에서 java, javac의 버전을 확인하여 제대로 설치되었는지 확인한다.
build project
로컬 환경에서 개발하던 프로젝트를 빌드해보자. 이 글에서는 로컬에서 빌드해서 만들어진 jar 파일을 사용하지만, 깃을 인스턴스에 설치해서 인스턴스 내부에서 프로젝트를 직접 빌드할 수도 있다.
- build(InteliiJ)
대상이 되는 메세징 서버는 gradle를 사용하고 있다. clean>builb>jar 순서로 클릭하면, build/libs 안에 jar 파일이 만들어진다.
- copy jar : jar 파일을 복사해서 인스턴스 안에 붙여넣는다.
- 인스턴스에서 실행하기
방화벽 설정
외부에서 특정 포트에 접근하기 위해서는 방화벽을 설정해주어야 한다. 해당 프로젝트는 localhost:8080으로 설정되어 있어서, 다음의 과정을 통해 인스턴스의 8080 포트를 열어주었다.
- window instance
- azure networt setting
test
위의 네트워크 탭에서 NIC 공용 IP를 확인한 후 POSTMAN에서 확인해보면 응답값을 잘 받아 오는 것을 볼 수 있다.
더 공부할 것
- 배포 자동화, 배포 환경 분리
AWS EC2를 쓰는게 나을까도 했었지만, Azure 크레딧이 남아 있는 것 알고 있었고 최근에 데브옵스 교육을 들으면서 Azure를 썼어서 Azure를 이용해 배포를 진행했다. 지금은 window에 배포를 했지만, 이후에는 window에 젠킨스를 두고 ubuntu나 리눅스 instance를 하나 두어서, 그쪽에 배포를 연결하는 게 좋을 것 같다.
이번달에, 데브옵스 교육을 들으면서 젠킨스와 깃을 연결해 배포 자동화하는 걸 배웠었다. 프로젝트가 조금 더 진행되면 검증용 서버와 운영용 서버를 나누어서, 배포 자동화도 해보고 SonnarSanner 같은 테스트 도구도 연결해 보려고 하려고 한다.
- 암복호화
메세징 서버가 연락처를 직접 다루다 보니, 개인정보를 그대로 저장하는 건 적절하지 않다. 암호화 된 전화번호를 받아서 데이터 베이스에 저장하고, 인증된 사용자 또는 문자를 보낼 때만 전화번호를 복호화 할 수 있도록 변경이 필요하다.
- Postman envoronments
포스트맨은 환경별로 변수를 지정할 수 있어서, 환경 별로 테스트를 용이하게 할 수있다. 예를 들어서, 테스트 할 때 사용한 http://{{public-ip}}:8080/contract/save 의 public-ip변수에 로컬 환경에서는 localhost를, 검증이나 운영 환경에서는 각 인스턴스의 등록해두고 사용할 수 있다.
'DevOps' 카테고리의 다른 글
[issue] AWS-EC2: 연결성 검사에 실패했습니다, CPU 100% 점유 (0) | 2024.02.13 |
---|---|
DevOps/AWS EC2 jar 배포하기 (0) | 2023.11.20 |
Docker/spring boot에 MySQL 데이터베이스 연결하기 (0) | 2023.09.05 |
docker/install docker, docker-compose (0) | 2023.07.18 |
DevOps/CICD (0) | 2023.07.17 |