자율 프로젝트 Java 11 Gradle Spring boot 2.7.4

💻웹 IoT Backend

모든 과정은 IntelliJ 2022.2 기준으로 설명되었습니다.

🛠기술스택 및 라이브러리

Project Version Description
Java 11
Spring Boot 2.7.1
Gradle
Spring Security 5.7.2
MariaDB 10.6.8
AWS EC2
Nginx
Docker
Jenkins Pipeline

🖥 서비스 아키텍처

Untitled

👷‍♂️개발 환경 구성 및 배포 과정

프로젝트 다운로드

  1. Gitlab의 레포지토리를 clone합니다.

    git clone <https://lab.ssafy.com/s07-webmobile3-sub2/S07P12D204.git>
    
  2. backend폴더로 이동합니다.

    cd S07P12D204/backend
    
  3. gradle 의존성을 다음과 같이 추가합니다.

    plugins {
    	id 'org.springframework.boot' version '2.7.1'
    	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    	id 'java'
    }
    
    group = 'com.yodel.imagnaryPlayground'
    version = '0.0.1-SNAPSHOT'
    sourceCompatibility = '11'
    
    configurations {
    	compileOnly {
    		extendsFrom annotationProcessor
    	}
    }
    
    repositories {
    	mavenCentral()
    }
    
    dependencies {
    	// Spring Boot
    	implementation 'org.springframework.boot:spring-boot-starter-web'
        implementation 'org.springframework.boot:spring-boot-starter-security'
    	implementation 'org.springframework.boot:spring-boot-starter-validation'
    	testImplementation 'org.springframework.boot:spring-boot-starter-test'
    
    	// oauth
    	implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
    	implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'
    
    	// Jwt
    	implementation 'io.jsonwebtoken:jjwt-api:0.11.2'
    	runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2'
    	runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.2'
    
    	// OAuth
    	implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2'
    	implementation 'org.mariadb.jdbc:mariadb-java-client:2.1.2'
    	compileOnly 'org.projectlombok:lombok'
    	annotationProcessor 'org.projectlombok:lombok'
    
    	// Swagger
    	implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'
    	implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
    
    	// mail 인증
    	implementation 'org.springframework.boot:spring-boot-starter-mail'
    
    	// Security
    	implementation group: 'org.springframework.security', name: 'spring-security-core', version: '5.7.1'
    
    	// File upload
    	implementation 'commons-io:commons-io:2.6'
    	implementation group: 'org.json', name: 'json', version: '20220320'
    
    }
    
    tasks.named('test') {
    	useJUnitPlatform()
    }
    

배포 과정

해당 서비스는 AWS EC2를 이용하여 배포하였습니다.

배포를 하기 위해 다음과 같은 방법으로 실행하였습니다.

  1. AWS EC2 인스턴스 생성

  2. 공개키 기반 인증 SSH 접속

    ssh -i "개인키 경로" [email protected]
    
  3. Docker + Jenkins 설치