반응형
AWS상에서 Backend 개발을 위한 기본 환경 구성에 대해서 간단한 예제를 정리하였습니다.
Getting Started
로컬 환경 구성
로컬 project-서비스 Spring boot 환경 구성
General Project Structure
VS Code
IDE 설치 개발툴은 개별 취향에 맞게 선택 여기서는 vscode 기준
- VS Code(https://code.visualstudio.com/)
- eclipse
- intelliJ 등
VS Code Extensions
개발을 위한 필수 Extention
- Spring Initializr Java Support - 스프링 프로젝트 만들때 템플릿
- Spring Boot Extension Pack - 스프링 개발에 필요한 익스텐션
- Spring Boot Tools - boot configuration
- Java Dependency Viewer - 의존성, 참조
- Debugger for Java - 자바 디버깅
- Java Extension Pack - 인기있는 자바 익스텐션 모음
- Language Support for Java by Red Hat - 코드 네비게이션, 리팩토링 등 생산성 향상
- Java Test Runner - JUnit등 테스트 실행
- Gradle Language Support - Gradle
- Gradle Task - Gradle Build
- Lombok Annotations Support for VS Code - 롬복
CI
소스관리
- Git Client 설치
- Git Repository Url: https://github.com/"project url"
Branch 전략
- feature/develop/stage/master 가 기본 Branch
- 개발자는 신규 기능 개발시 develop에서 feature 브랜치를 생성하여 작업한다.
- 개발이 완료된 feature에 한하여 develop에 merge한다.
Swagger 3(open api 3)
API 관리
DB 접속정보
아래 파일들을 생성하여 위치시킨다.
- /etc/secret/서비스_ENDPOINT : db endpoint ex) localhost:5433
- /etc/secret/서비스_USERNAME : db user name
- /etc/secret/서비스_PASSWORD : db user password
- /etc/secret/서비스_DATABASE : db database name
- /etc/secret/서비스_SCHEMA : db schema
- /etc/secret/REDIS_ENDPOINT : redis endpoint 포트없음 ex) localhost
- windows경우 C:\etc\secret\ 하위에 위치
bastion을 이용한 터널링
aws의 자원에 접근하기 위하여 bastion으로 터널링하여 접근함
윈도우즈에서는 putty를 이용
openjdk 11 설치
Open JDK 설치
- jdk다운로드 및 로컬 설치 : https://jdk.java.net/archive
- 그외 JAVA_HOME과 PATH 추가는 환경변수를 활용함(GIT Bash 또는 WSL, CMD는 환경변수에 따라 동작함)
기동
- spring boot 기동
- spring boot dashboard 사용
- 혹은 ./gradlew bootRun
- health check
- GET, http://localhost:7070/healthy
- 응답, 200 OK, {"status": "UP"}
aws cli 설치 및 credential 파일 생성
- aws cli 설치
- credential 셋업
- https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-configure-files.html
- $ aws configure 명령어로 셋업
- credential 편집(ukids 용 profile 추가)
- C:\사용자\Administrator\.aws\credentials
- C:\사용자\Administrator\.aws\config
- 내용
credentials 파일
[default]
aws_access_key_id = 엑세스 키 값
aws_secret_access_key = 시크릿 엑세스 키 값
[ukids-dev]
role_arn = arn:aws:iam::532333860892:role/UKIDS-DEVELOPER
source_profile = default
config 파일
[default]
region = ap-northeast-2
[ukids-dev]
region = ap-northeast-2
- assume role 방법
- linux, mac : export AWS_PROFILE=ukids-dev
- windows : setx AWS_PROFILE ukids-dev
Getting Started
로컬 환경 구성
로컬 ukids-be-notification Spring boot 환경 구성
General Project Structure
├─ bin/ # Directory for builds
├─ doc/ # Directory for documents
├─ gradle/ # Directory for gradle
├─ libs # Directory for external jars
├─┬ src/main/
│ ├─┬ java/com/lguplus/ukids/notification/
│ │ ├─ annotation/ # Directory for custom annotation(no logging)
│ │ ├─ aspect/ # Directory for Spring Boot Aspect(encrypt, log)
│ │ ├─ config/ # Directory for Spring Boot Configure Beans
│ │ ├─ constants/ # Directory for Constants variables
│ │ ├─ controller/ # Directory for restcontrollers and controller for jsp
│ │ ├─ dto/ # Directory for data transfer object model
│ │ ├─ exception/ # Directory for exception based AOP
│ │ ├─ healthy/ # Directory for Healthy Controller
│ │ ├─ interceptor/ # Directory for interceptors(session)
│ │ ├─ listener/ # Directory for kafaka listener(consumer)
│ │ ├─ repository/ # Directory for repositories
│ │ ├─ service/ # Directory for services
│ │ ├─ utility/ # Directory for java utilities
│ │ └─ UKidsNotificationApplication # Spring Boot Application class
│ └─┬ resources/ # Directory for static resources
│ ├─ sql/ # Directory for sql files using mybatis
│ └─ application.yml # Spring boot configure file
├─ build.gradle # gradle build file
├─ Docker-entrypoint.sh # docker build sh in CICD
└─ Dockerfile # docker build sh in CICD
VS Code
IDE 설치 개발툴은 개별 취향에 맞게 선택 여기서는 vscode 기준
- VS Code(https://code.visualstudio.com/)
- eclipse
- intelliJ 등
VS Code Extensions
개발을 위한 필수 Extention
- Spring Initializr Java Support - 스프링 프로젝트 만들때 템플릿
- Spring Boot Extension Pack - 스프링 개발에 필요한 익스텐션
- Spring Boot Tools - boot configuration
- Java Dependency Viewer - 의존성, 참조
- Debugger for Java - 자바 디버깅
- Java Extension Pack - 인기있는 자바 익스텐션 모음
- Language Support for Java by Red Hat - 코드 네비게이션, 리팩토링 등 생산성 향상
- Java Test Runner - JUnit등 테스트 실행
- Gradle Language Support - Gradle
- Gradle Task - Gradle Build
- Lombok Annotations Support for VS Code - 롬복
CI
소스관리
- Git Client 설치
- Git Repository Url: https://github.com/ukids/kids_notification
Branch 전략
- feature/develop/stage/master 가 기본 Branch
- 개발자는 신규 기능 개발시 develop에서 feature 브랜치를 생성하여 작업한다.
- 개발이 완료된 feature에 한하여 develop에 merge한다.
Swagger 3(open api 3)
API 관리
DB 접속정보
아래 파일들을 생성하여 위치시킨다.
- /etc/secret/DB_ENDPOINT : db endpoint ex) localhost:5433
- /etc/secret/DB_USERNAME : db user name ex) ukids_dev
- /etc/secret/DB_PASSWORD : db user password ex) !ukids_dev2021
- /etc/secret/DB_DATABASE : db database name ex) notificationdb
- /etc/secret/DB_SCHEMA : db schema ex) notification_schema 다른 domain에 대해서도 위 5개 파일을 똑같이 생성
- /etc/secret/REDIS_ENDPOINT : redis endpoint 포트없음 ex) localhost
- windows경우 C:\etc\secret\ 하위에 위치
bastion을 이용한 터널링
aws의 자원에 접근하기 위하여 bastion으로 터널링하여 접근함
윈도우즈에서는 putty를 이용
openjdk 11 설치
Open JDK 설치
- jdk다운로드 및 로컬 설치 : https://jdk.java.net/archive
- 그외 JAVA_HOME과 PATH 추가는 환경변수를 활용함(GIT Bash 또는 WSL, CMD는 환경변수에 따라 동작함)
기동
- spring boot 기동
- spring boot dashboard 사용
- 혹은 ./gradlew bootRun
- health check
- GET, http://localhost:7070/healthy
- 응답, 200 OK, {"status": "UP"}
aws cli 설치 및 credential 파일 생성
- aws cli 설치
- credential 셋업
- https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-configure-files.html
- $ aws configure 명령어로 셋업
- credential 편집(ukids 용 profile 추가)
- C:\사용자\Administrator\.aws\credentials
- C:\사용자\Administrator\.aws\config
- 내용
credentials 파일
[default]
aws_access_key_id = 엑세스 키 값
aws_secret_access_key = 시크릿 엑세스 키 값
[project-dev]
role_arn = arn:aws:iam::"AWS계정Number":role/"Project 환경 -DEVELOPER"
source_profile = default
config 파일
[default]
region = ap-northeast-2
["Project-dev"]
region = ap-northeast-2
- assume role 방법
- linux, mac : export AWS_PROFILE="Project-환경"
- windows : setx AWS_PROFILE "Project-환경"
반응형
'고기 대신 SW 한점 > DEVOPS' 카테고리의 다른 글
[DevOps] CI (Continuous Integration) 완전 정복 (3) | 2022.12.07 |
---|---|
[DevOps] CD, Routing 컨트롤을 통한 Rollout 방안 (0) | 2022.10.26 |
[Helm] k8s package manger - 낱낱이 알아보기 (0) | 2022.10.24 |
[istio] Circuit Break 구현 (0) | 2022.10.14 |
Code Convention (0) | 2022.09.29 |