[DevOps] 스프링 서버 모놀리식 배포하기 - 환경구축(1)

Doccimann·2022년 3월 30일
2

본격적으로 작성하기 전에 할 말

이번 시리즈는, 작성한 스프링부터 어플리케이션을 어떻게 모놀리식으로 배포할지에 대해서 중점적으로 다룰 예정입니다! 따라서 스프링 자체 내용보다는, 배포 관련된 내용이 주류를 이룰것이기 때문에 이 점을 유의해서 이번 시리즈를 감상해주시면 감사하겠습니다!


어떤 서버를 작성해볼까요?

저는 예제로, 가게와 메뉴 정보를 제공하는 API 서버를 스프링부트를 이용해서 작성해보았습니다.

제가 생각한 엔티티 구조는 다음과 같습니다!

따라서 위의 구조에 맞춰서 작성을 해보겠습니다!


서버 구조는 어떻게 가져갈까요?

아무리 서버를 간단하게 구축을 한다고해도, 최소한 갖출것은 갖추면서 작성해볼 생각입니다. 따라서 저는 최소한 이 정도는 구현해야하지 않을까 싶은 정도를 정해보았는데요, 그건 다음과 같습니다!

  • Domain Layer와 Application Layer는 철저하게 분리를 해야하지 않을까? 양심이 있으니까
  • 그래도 MVC 패턴에 따라서 Repository, Service, Controller 의 3계층을 철저히 분리시켜서 구현하자
  • 그래도 Return에 대해서 특정 format을 갖춰야하지 않을까?

그래서 저는 Domain Layer를 본격적으로 작성하기 전에, ResultFactory라는 것을 만들어서 return에 대해서는 특정 포맷을 따르도록 강제를 시킬 예정입니다.

이제 본격적으로 개발을 위한 환경 구축을 시작해보겠습니다!


환경을 구축해보도록하죠

일단 저는 IntelliJ IDEA Ultimate 라는 툴을 이용해서 SpringBoot Application을 작성해볼 생각입니다! 따라서 저의 글을 보고 따라하실 분들은 아래의 링크를 따라가서 설치를 해주시면됩니다.

  • 만일 학생 신분이신 경우에는 학생라이선스를 획득하여 Ultimate 버전을 설치해주시면 됩니다.
    참고 링크 : https://goddaehee.tistory.com/215
  • 학생 신분은 아니지만 Ultimate 버전을 설치하시기가 곤란한 경우에는, Community version을 설치하시고 gradle 환경 설정을 통해서 SpringBoot를 사용할 수도 있습니다.
  • 본 포스트에서는 windows 설치 링크를 제공해드렸습니다. 만일 windows 환경이 아닌 다른 환경에서 프로젝트를 따라해보실 생각이시라면, 각자의 os에 맞게 설치를 진행해주시면 됩니다!

설치가 완료되셨다면, 프로젝트를 생성하겠습니다. 저는 우선 아래의 환경을 사용중입니다.

  • 운영체제 : MacOS (Apple Silicon)
  • JDK : JDK version16 (azul) <- Apple Silicon 환경에 최적화된 JDK 버전입니다. 윈도우 환경이신 경우에는 azul 버전 외에 다른 버전을 사용하셔도 무방할 것이라 생각합니다.

New Project 버튼을 눌러서 시작하겠습니다. New Project 버튼을 눌러서 프로젝트 생성 창에 접근하셨다면 다음과 같이 체크를 합니다.

  • Language(언어) : Java
  • Type : Gradle
  • Project SDK : 본인이 사용중인 JDK의 버전
  • Java : 이번 실습에서는 11버전을 사용하겠습니다. 나중에 ec2 상에서도 11버전으로 설치할 예정이니 이건 반드시 11버전으로 적용해주세요!

다음으로 Next 버튼을 누릅니다.

이 창에서는 4개를 선택합니다.

  • Developer Tools -> Lombok
  • Web -> Spring Web
  • SQL -> Spring Data JPA, MySQL Driver

다음으로 Finish를 누르시면, Gradle 기반으로 프로젝트가 생성되고, Gradle build를 시작합니다. 이 과정에서 시간이 다소 소요될 수도 있습니다. 인내심을 가지고 참으세요


다음 포스트에서는 AWS에서 제공하는 RDS 기능을 이용한 MySQL 서버 구축 방법, AWS RDS와 프로젝트를 연결하는 방법, 그리고 프로젝트를 어떻게 작성했는지에 대해서 일부 소개해드릴 예정입니다.

다음 포스트에서 뵙겠습니다!

profile
Hi There 🤗! I'm college student majoring Mathematics, and double majoring CSE. I'm just enjoying studying about good architectures of back-end system(applications) and how to operate the servers efficiently! 🔥

0개의 댓글