스프링 부트 백엔드 개발 강좌, AWS 서비스로 우리의 서비스 배포하기

최근 몇 년 간, 자바 기반의 프레임워크인 스프링 부트(Spring Boot)는 백엔드 개발 분야에서 인기를 끌고 있습니다. 스프링 부트는 설정을 간소화하고 생산성을 높이는 데 중점을 두어 개발자들이 더욱 빠르고 효율적으로 애플리케이션을 구축할 수 있도록 도움을 줍니다. 또한, 클라우드 서비스의 발전으로 인해 우리의 서비스도 손쉽게 배포할 수 있는 시대가 열렸습니다. 특히 AWS(Amazon Web Services)는 다양한 클라우드 서비스와 기능을 제공하여 백엔드 애플리케이션을 유연하게 운영할 수 있도록 지원합니다. 이번 강좌에서는 스프링 부트를 사용해 간단한 백엔드 애플리케이션을 개발하고, 이를 AWS에 배포하는 과정에 대해 자세히 설명하겠습니다.

1. 스프링 부트 소개

스프링 부트는 ‘적은 설정으로 많은 것을 할 수 있게 해준다’는 모토를 가지고 있습니다. 전통적인 스프링 프레임워크는 많은 설정과 구성이 필요했지만, 스프링 부트는 이를 자동으로 설정하여 개발자를 지원합니다. 이로 인해 우리는 비즈니스 로직에 집중할 수 있는 환경을 제공받게 됩니다.

  • 스프링 부트의 특징
    • 자동 설정: 스프링 부트는 기본적으로 제공하는 설정으로 대부분의 기능을 사용할 수 있습니다.
    • 스타터 종속성: 필요한 라이브러리를 스타터 종속성으로 제공하여 간편하게 사용할 수 있습니다.
    • 임베디드 서버: 톰캣, 제티 같은 서버를 내장하여 배포의 복잡성을 줄입니다.
    • 프로덕션 준비: 스프링 부트는 모니터링 및 관리에 필요한 여러 기능을 기본적으로 제공합니다.

2. 스프링 부트 개발 환경 설정

스프링 부트 애플리케이션을 개발하기 위해서는 먼저 Java Development Kit(JDK)가 설치되어 있어야 합니다. 또한, IDE(통합 개발 환경)로는 IntelliJ IDEA, Eclipse, VS Code 등을 추천합니다. 이번 강좌에서는 IntelliJ IDEA를 기준으로 설명하겠습니다.

  1. JDK 설치

    JDK를 설치한 후, JAVA_HOME 환경 변수를 설정합니다. JDK의 최신 버전을 다운로드하려면 Oracle 공식 웹사이트 또는 OpenJDK를 방문하세요.

  2. IDE 설치

    IntelliJ IDEA를 다운로드하고 설치합니다. 설치 후 기본적인 설정을 완료합니다.

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

    IntelliJ IDEA를 실행한 후, “New Project”를 선택하고 “Spring Initializr”를 선택하여 새로운 스프링 부트 프로젝트를 생성합니다.

3. 스프링 부트 프로젝트 구성

스프링 부트 프로젝트를 만들 때는 원하는 패키지 구조와 필요한 의존성을 선택할 수 있습니다. 일반적으로 사용하는 의존성은 다음과 같습니다:

  • Spring Web: RESTful API 개발을 위한 라이브러리
  • Spring Data JPA: 데이터베이스 연동을 위한 라이브러리
  • H2 Database: 인메모리 데이터베이스로 실습에 용이

3.1 기본적인 애플리케이션 설정

프로젝트가 생성된 후, application.properties 파일을 열어 기본 설정을 추가할 수 있습니다. 예를 들어, 포트 번호 설정을 변경하고 싶은 경우 다음과 같이 설정할 수 있습니다:

server.port=8080

3.2 엔티티 클래스 생성

이번 강좌에서는 간단한 메모(또는 할 일) 관리 애플리케이션을 만들어 보겠습니다. 다음과 같이 엔티티 클래스를 생성해보겠습니다:

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

@Entity
public class Todo {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String title;
    private boolean completed;

    // Getter and Setter methods
}

3.3 리포지토리 인터페이스 생성

Spring Data JPA를 사용하여 데이터베이스와 상호작용할 수 있는 리포지토리 인터페이스를 생성합니다:

import org.springframework.data.jpa.repository.JpaRepository;

public interface TodoRepository extends JpaRepository {
}

3.4 서비스 클래스 생성

비즈니스 로직을 처리할 서비스 클래스를 작성합니다:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class TodoService {
    @Autowired
    private TodoRepository todoRepository;

    public List getAllTodos() {
        return todoRepository.findAll();
    }

    public Todo createTodo(Todo todo) {
        return todoRepository.save(todo);
    }
}

3.5 REST API 컨트롤러 생성

마지막으로, 이 애플리케이션의 REST API 인터페이스를 제공하는 컨트롤러 클래스를 생성합니다:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/todos")
public class TodoController {
    @Autowired
    private TodoService todoService;

    @GetMapping
    public List getAllTodos() {
        return todoService.getAllTodos();
    }

    @PostMapping
    public ResponseEntity createTodo(@RequestBody Todo todo) {
        return ResponseEntity.ok(todoService.createTodo(todo));
    }
}

4. AWS에 서비스 배포하기

애플리케이션을 개발한 후 AWS에 배포할 준비를 합니다. AWS에 배포하기 위해서는 AWS 계정이 필요합니다. 계정을 생성한 후 AWS Management Console에 로그인합니다.

4.1 Elastic Beanstalk 사용하기

AWS Elastic Beanstalk는 웹 애플리케이션 및 서비스 배포를 간소화해주는 PaaS(Platform as a Service)입니다. 다음 단계를 통해 애플리케이션을 배포할 수 있습니다:

  1. Elastic Beanstalk 환경 생성

    AWS Management Console에서 Elastic Beanstalk을 선택하고, “Create New Application” 버튼을 클릭합니다. 애플리케이션 이름과 설명을 입력합니다.

  2. 환경 설정

    환경을 설정할 때, “Web server environment”를 선택하고 플랫폼으로 “Java”를 선택합니다. 이후 JAR 파일을 업로드하기 위한 옵션이 제공됩니다.

  3. 애플리케이션 JAR 파일 생성

    IntelliJ IDEA에서 프로젝트를 빌드하여 JAR 파일을 생성합니다. mvn clean package 명령을 사용하여 생성할 수 있습니다.

  4. JAR 파일 업로드

    Elastic Beanstalk 대시보드로 돌아가서 생성한 JAR 파일을 업로드합니다. 이후 “Create Environment” 버튼을 클릭하여 환경을 생성합니다.

4.2 환경 URL 확인하기

환경이 생성되면 AWS가 제공하는 URL을 통해 애플리케이션에 접근할 수 있습니다. 이 URL을 브라우저에 입력하여 애플리케이션이 정상적으로 작동하는지 확인합니다.

4.3 데이터베이스 연동하기

실제 운영 환경에서는 RDS(Amazon Relational Database Service)를 사용하여 데이터베이스를 관리하는 것이 일반적입니다. RDS를 설정하고, 애플리케이션에서 데이터베이스와 연결하는 방법을 설명하겠습니다:

  1. RDS 인스턴스 생성

    RDS 대시보드에서 “Create database”를 클릭합니다. 데이터베이스 엔진을 선택하고, 인스턴스 종류 및 기타 설정을 완료합니다.

  2. 보안 그룹 설정

    RDS 인스턴스에 대한 보안 그룹을 설정하여 애플리케이션에서 접근할 수 있도록 허용합니다.

  3. 애플리케이션 설정 업데이트

    RDS의 연결 정보를 애플리케이션의 application.properties 파일에 추가합니다:

    spring.datasource.url=jdbc:mysql://:/
    spring.datasource.username=
    spring.datasource.password=

5. 결론

이번 강좌를 통해 스프링 부트와 AWS Elastic Beanstalk를 사용하여 간단한 백엔드 애플리케이션을 개발하고 배포하는 방법에 대해 살펴보았습니다. 스프링 부트는 개발자에게 많은 편리함을 제공하고, AWS는 개발한 애플리케이션을 손쉽게 배포할 수 있도록 도와줍니다. 실무에 도입하여 다양한 서비스를 구축하는 데 있어 큰 도움이 될 것입니다. 앞으로도 더 많은 기능을 학습하고 실제 비즈니스에 적용해보기를 권장드립니다.

6. 참고 자료