고기 대신 SW 한점/DEVOPS

[Backend] 개발 환경 구성 : 끝장내기

지식한점 2022. 10. 11. 08:24
반응형

AWS상에서 Backend 개발을 위한 기본 환경 구성에 대해서 간단한 예제를 정리하였습니다.

Getting Started

로컬 환경 구성

로컬 project-서비스 Spring boot 환경 구성

General Project Structure

VS Code

IDE 설치 개발툴은 개별 취향에 맞게 선택 여기서는 vscode 기준

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

소스관리

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는 환경변수에 따라 동작함)

기동

  1. spring boot 기동
    • spring boot dashboard 사용
    • 혹은 ./gradlew bootRun
  2. health check

aws cli 설치 및 credential 파일 생성

  1. aws cli 설치
  2. credential 셋업
  3. credential 편집(ukids 용 profile 추가)
  • C:\사용자\Administrator\.aws\credentials
  • C:\사용자\Administrator\.aws\config
  1. 내용

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
  1. 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 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

소스관리

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는 환경변수에 따라 동작함)

기동

  1. spring boot 기동
    • spring boot dashboard 사용
    • 혹은 ./gradlew bootRun
  2. health check

aws cli 설치 및 credential 파일 생성

  1. aws cli 설치
  2. credential 셋업
  3. credential 편집(ukids 용 profile 추가)
  • C:\사용자\Administrator\.aws\credentials
  • C:\사용자\Administrator\.aws\config
  1. 내용

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
  1. assume role 방법
    • linux, mac : export AWS_PROFILE="Project-환경"
    • windows : setx AWS_PROFILE "Project-환경"
반응형