안녕하세요! 오늘은 스프링 부트로 백엔드 서비스를 개발하고, 이를 일래스틱 빈스토크(Elastic Beanstalk)에 배포하는 방법을 알아보겠습니다. 이 강좌는 백엔드 개발 및 AWS 서비스에 대한 이해가 있는 분들을 대상으로 하며, 기초부터 차근차근 설명하겠습니다.
목차
스프링 부트 소개
스프링 부트(Spring Boot)는 스프링 프레임워크를 기반으로 한 개발 프레임워크로, 애플리케이션을 신속하게 개발할 수 있도록 도와줍니다. 스프링 부트는 자동 설정, 내장 서버 제공, 그리고 메이븐 또는 그레이들과 같은 프로듀서와의 손쉬운 통합이 가능합니다. 이로 인해 개발자는 환경 설정에 대한 부담 없이 비즈니스 로직에 집중할 수 있습니다.
주요 특징
- 자동 설정: 스프링 부트는 애플리케이션을 위한 기본 설정을 자동으로 구성합니다.
- 독립 실행 가능: 내장 Tomcat을 사용하여 단독으로 실행할 수 있습니다.
- 의존성 관리: 다양한 라이브러리와의 의존성을 관리할 수 있는 메이븐 또는 그레이들 통합 지원.
- 모니터링: Actuator를 통해 애플리케이션의 상태를 모니터링할 수 있습니다.
스프링 부트 프로젝트 설정
스프링 부트 프로젝트를 설정하기 위해 Spring Initializr를 사용할 수 있습니다. 해당 사이트를 통해 프로젝트 메타데이터를 입력하고 필요한 의존성을 선택할 수 있습니다.
1. Spring Initializr 접속
Spring Initializr에 접속하여 아래와 같이 입력합니다:
- Project: Maven Project
- Language: Java
- Spring Boot: 2.5.4 (최신 버전으로 설정)
- Group: com.example
- Artifact: demo
- Dependencies: Spring Web, Spring Data JPA, H2 Database
설정을 완료한 후 Generate
버튼을 클릭하여 ZIP 파일을 다운로드합니다.
2. IDE에서 프로젝트 열기
다운로드한 ZIP 파일을 원하는 디렉토리에 압축 해제한 후, IntelliJ IDEA 또는 Eclipse와 같은 IDE에서 프로젝트를 엽니다.
백엔드 서비스 개발
프로젝트가 설정되었으니, 실제 백엔드 서비스를 개발해보겠습니다. 간단한 사용자 관리 REST API를 만들겠습니다.
1. 엔티티 생성
사용자 정보를 저장할 User
엔티티를 생성합니다.
package com.example.demo.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
}
2. 리포지토리 인터페이스 생성
JPA를 사용하여 데이터베이스와의 연동을 위해 리포지토리 인터페이스를 생성합니다.
package com.example.demo.repository;
import com.example.demo.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository {
}
3. 서비스 클래스 생성
비즈니스 로직을 처리할 서비스 클래스를 작성합니다.
package com.example.demo.service;
import com.example.demo.model.User;
import com.example.demo.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 createUser(User user) {
return userRepository.save(user);
}
}
4. 컨트롤러 클래스 생성
REST API 엔드포인트를 처리할 컨트롤러를 작성합니다.
package com.example.demo.controller;
import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping
public List getUsers() {
return userService.getAllUsers();
}
@PostMapping
public User createUser(@RequestBody User user) {
return userService.createUser(user);
}
}
애플리케이션 테스트
이제 애플리케이션이 잘 동작하는지 테스트해보겠습니다. 스프링 부트 애플리케이션을 실행한 후, Postman 또는 cURL을 사용하여 REST API를 호출해볼 수 있습니다.
1. 애플리케이션 실행
IDE에서 메인 클래스를 실행하여 애플리케이션을 시작합니다. 기본적으로 http://localhost:8080
에서 실행됩니다.
2. 사용자 생성 요청
Postman을 열고 아래와 같이 요청을 만들어 사용자 생성 API를 호출합니다.
- POST:
http://localhost:8080/api/users
- Body (JSON 형식):
{ "name": "홍길동", "email": "hong@example.com" }
3. 사용자 조회 요청
GET 요청을 만들어 모든 사용자 정보를 조회합니다.
- GET:
http://localhost:8080/api/users
배포 패키지 생성
애플리케이션이 정상적으로 작동하면 배포를 위해 패키지를 생성합니다. Maven을 사용하여 JAR 파일을 빌드하겠습니다.
1. Maven 빌드
터미널에서 아래와 같은 명령어를 실행하여 프로젝트를 빌드합니다.
./mvnw clean package
이 명령을 실행하면 target
폴더에 JAR 파일이 생성됩니다.
일래스틱 빈스토크 소개
아마존 웹 서비스(AWS)에서 제공하는 일래스틱 빈스토크(Elastic Beanstalk)는 웹 애플리케이션을 쉽게 배포하고 운영할 수 있도록 돕는 서비스입니다. 이 서비스를 사용하면 서버 및 인프라 관리를 AWS가 대신 처리해주며, 개발자는 오로지 애플리케이션 개발에만 집중할 수 있습니다.
주요 특징
- 자동화된 인프라 관리: 서버, 로드 밸런서, 데이터베이스 등 모든 인프라 관리를 자동으로 처리합니다.
- 안정성: EC2 인스턴스를 사용하여 안정적인 호스팅 환경을 제공합니다.
- 스케일링: 사용자가 늘어나면 자동으로 인스턴스를 추가해줍니다.
- 모니터링: AWS 관리 콘솔을 통해 애플리케이션의 상태와 로그를 실시간으로 모니터링할 수 있습니다.
일래스틱 빈스토크에 배포하기
이제 생성한 JAR 파일을 일래스틱 빈스토크에 배포하는 과정을 진행하겠습니다.
1. AWS 계정 생성 및 로그인
먼저 AWS 계정을 생성하고 콘솔에 로그인합니다.
2. Elastic Beanstalk 환경 생성
AWS 관리 콘솔에서 Elastic Beanstalk를 선택한 후, Create New Application
버튼을 클릭합니다. 애플리케이션 이름과 설명을 입력하고 Create
를 클릭합니다.
3. 환경 생성
애플리케이션 대시보드에서 Create New Environment
를 클릭한 다음, Web server environment
를 선택합니다. Platform으로 Java
를 선택하고, 애플리케이션 코드로 Upload your code
를 선택한 후, 앞서 생성한 JAR 파일을 업로드합니다.
4. 환경 설정
환경에 대한 설정을 완료한 후, Create Environment
를 클릭하여 환경 생성을 완료합니다. 이 과정은 몇 분 정도 소요됩니다.
5. 애플리케이션 접속
환경이 생성된 후에는 배포된 애플리케이션의 URL을 통해 접속할 수 있습니다. 해당 URL로 접속하여 애플리케이션이 정상적으로 동작하는지 확인합니다.
결론
이상으로 스프링 부트를 사용하여 백엔드 서비스를 개발하고, 이를 일래스틱 빈스토크에 배포하는 과정에 대해 알아보았습니다. 스프링 부트의 강력한 기능과 AWS의 유연한 인프라 관리 덕분에 신속하고 안정적인 개발 및 배포가 가능해졌습니다. 앞으로도 다양한 서비스를 AWS를 통해 운영해보시기를 추천드립니다.
감사합니다!