스프링 부트 백엔드 개발 강좌, 설정이 간편한 일래스틱 빈스토크

스프링 부트(Spring Boot)는 자바 기반의 프레임워크로, 복잡한 설정 없이 빠르고 쉽게 스프링 애플리케이션을 개발할 수 있게 도와줍니다. 이번 강좌에서는 스프링 부트를 사용하여 백엔드 애플리케이션을 개발하는 방법과 함께, 설정이 간편한 클라우드 플랫폼인 일래스틱 빈스토크(Elastic Beanstalk)에 배포하는 방법에 대해 다루겠습니다.

1. 스프링 부트란?

스프링 부트는 스프링 프레임워크를 기반으로 한 경량화된 프레임워크로, 개발자가 복잡한 설정을 하지 않고도 손쉽게 애플리케이션을 생성하고 배포할 수 있게 합니다. 다양한 스타터(Starter)를 통해 필요한 라이브러리를 간편하게 추가할 수 있으며, 내장 웹 서버를 통해 간편하게 애플리케이션을 실행할 수 있습니다.

2. 일래스틱 빈스토크란?

일래스틱 빈스토크는 아마존 웹 서비스(AWS)에서 제공하는 PaaS(Platform as a Service)입니다. 개발자는 인프라를 관리할 필요 없이 코드만으로 애플리케이션을 배포하고 관리할 수 있습니다. 일래스틱 빈스토크는 자동화된 배포, 확장성, 모니터링 기능을 제공하여 서버 관리에 필요한 시간과 노력을 줄여줍니다.

3. 스프링 부트 프로젝트 생성하기

스프링 부트 프로젝트는 Spring Initializr(https://start.spring.io)를 통해 쉽게 생성할 수 있습니다. 다음 단계를 따라 프로젝트를 생성해보겠습니다.

  1. 웹 브라우저에서 Spring Initializr에 접속합니다.
  2. 프로젝트 메타데이터를 설정합니다:
    • Project: Maven Project
    • Language: Java
    • Spring Boot: 2.6.x (최신 버전 선택)
    • Group: com.example
    • Artifact: myapp
    • Name: MyApp
    • Description: Demo project for Spring Boot
    • Package name: com.example.myapp
    • Packaging: Jar
    • Java: 11 또는 최신 버전
  3. Dependencies에서 Web, JPA, MySQL Driver를 선택한 후 “Generate” 버튼을 클릭하여 프로젝트를 다운로드합니다.
  4. 다운로드된 ZIP 파일을 압축 해제한 후 IDE에서 프로젝트를 엽니다.

4. 스프링 부트 애플리케이션 구조

스프링 부트 애플리케이션의 기본 구조는 다음과 같습니다:

myapp/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com.example.myapp/
│   │   │       ├── MyAppApplication.java
│   │   │       ├── controller/
│   │   │       ├── service/
│   │   │       └── repository/
│   │   └── resources/
│   │       ├── application.properties
│   │       └── static/
│   └── test/
│       └── java/
└── pom.xml

5. 애플리케이션 설정하기

src/main/resources/application.properties 파일을 열고 데이터베이스 연결 설정을 추가합니다.

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update

5.1. 엔티티 및 리포지토리 생성

먼저, 간단한 도메인 모델을 만들고, 데이터베이스 테이블과 매핑할 엔티티 클래스를 정의합니다.

package com.example.myapp.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    private String email;

    // getters and setters
}

리포지토리 인터페이스를 생성하여 JPA를 통해 데이터베이스 작업을 수행할 수 있도록 합니다.

package com.example.myapp.repository;

import com.example.myapp.model.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository {
}

5.2. 서비스 및 컨트롤러 생성

서비스 클래스를 만들어 비즈니스 로직을 구현합니다.

package com.example.myapp.service;

import com.example.myapp.model.User;
import com.example.myapp.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public List getAllUsers() {
        return userRepository.findAll();
    }

    public User saveUser(User user) {
        return userRepository.save(user);
    }
}

컨트롤러 클래스를 만들어 REST API를 제공합니다.

package com.example.myapp.controller;

import com.example.myapp.model.User;
import com.example.myapp.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping
    public List getAllUsers() {
        return userService.getAllUsers();
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.saveUser(user);
    }
}

6. 애플리케이션 실행하기

이제 모든 설정이 완료되었습니다. 다음 명령어를 사용하여 애플리케이션을 실행할 수 있습니다.

./mvnw spring-boot:run

브라우저에서 http://localhost:8080/users를 입력하여 사용자를 조회할 수 있습니다.

7. 일래스틱 빈스토크에 배포하기

이제 개발한 애플리케이션을 일래스틱 빈스토크에 배포하겠습니다. 다음 단계에 따라 진행하세요.

7.1. AWS 계정 생성

일래스틱 빈스토크를 사용하기 위해서는 AWS 계정이 필요합니다. AWS 홈페이지에 접속하여 계정을 생성해야 합니다.

7.2. 일래스틱 빈스토크 환경 생성

  1. AWS Management Console에 로그인합니다.
  2. Elastic Beanstalk 서비스를 선택합니다.
  3. ‘Create New Application’를 선택합니다.
  4. 애플리케이션 이름을 입력하고 ‘Create’ 버튼을 클릭합니다.
  5. ‘Create environment’를 클릭하고 ‘web server environment’를 선택합니다.

7.3. 플랫폼 선택

플랫폼에서 ‘Java’를 선택하고, 적절한 버전을 선택합니다. 여기서 사용하고 있는 Java 버전과 동일해야 합니다.

7.4. 애플리케이션 코드 업로드

이제 배포할 애플리케이션 코드를 ZIP 파일로 압축한 후 업로드합니다. ZIP 파일에는 pom.xmlapplication.properties 파일이 포함되어야 합니다.

7.5. 배포 및 모니터링

AWS가 애플리케이션을 배포할 때까지 기다립니다. 배포가 완료된 후, 애플리케이션의 URL이 생성됩니다. 이 URL을 통해 공개적으로 애플리케이션에 접근할 수 있습니다.

8. 결론

이번 강좌에서는 스프링 부트를 사용하여 간단한 백엔드 애플리케이션을 개발하고, 일래스틱 빈스토크를 통해 배포하는 과정을 살펴보았습니다. 이러한 설정이 간편한 도구들을 활용하면 개발 과정이 훨씬 더 수월해지고, 빠르게 프로토타입을 만들거나 서비스를 제공할 수 있습니다. 스프링 부트와 일래스틱 빈스토크를 활용한 개발로 더욱 생산적인 개발 환경을 구축하시기 바랍니다.

9. 참고 자료