이번에 개인 프로젝트를 시작하려고 합니다.
일단은 게시판을 구체적으로 만들어보고 본인이 생각해 둔 프로젝트 기능이 있는데 그것을 구현해보려고 합니다.
전체적인 기술 스택
- 클라우드 - AWS EC2, RDS
- 프론트엔드 - React
- 백엔드 - Spring Boot, Spring JPA(ORM)
- DB - h2 database, MySQL
현재 수준과 목표
- React : 거의 반년만에 만지는데.. 그래도 노마드 코더 React 챌린지를 통과한 짬이 있으니 잘 해결할 수 있으리라고 믿습니다 ㅎㅎ..
- AWS는 새 프리티어 계정을 만들어서 EC2 인스턴스를 생성하고, 우선 Nginx를 이용해 프론트 웹 서버와 백엔드 웹 애플리케이션 서버를 띄우려고 합니다. 프론트에 S3를 사용하는 것도 생각해두고 있습니다.
- RDS를 MySQL로 설정해 사용하려고 합니다. H2를 초기 단계에 사용하다가, MySQL로 마이그레이션 해보는 경험을 가져보고 싶어서 이렇게 구성했습니다.
- 서버는 Spring Boot강의를 꾸준하게 들었고, 현재 대외활동 UMC에서도 Spring Boot를 학습중이므로 이를 사용하려고 합니다.
먼저 빠르게 API를 설계하고, ERD 다이어그램을 작성한 후 백엔드 부터 시작하려고 합니다.
물론 API와 ERD는 언제나 수정될 수 있다는 점을 참고하시면 좋겠습니다.
열심히해서 Thymeleaf를 사용해 관리자 페이지도 만들어보는 것이 목표입니다. Redis도 사용해보고 싶습니다.
더 추가적인 기술 스택 추가나 느낀점이 있으면 계속 작성하겠습니다.
프로젝트 시작
아래 사이트로 들어가 Spring Boot 프로젝트를 생성한다.
필자는 아래와 같이 설정했다.
- Gradle Project로 생성한다.
- Group는 회사명이나 도메인이 들어간다고 한다.
- Artifact와 Name은 빌드되어서 나오는 결과물 이름이다. 또한 생성된 디렉터리에 이름이다.
- 이제 추가한 Dependencies를 살펴보자.
- Lombok : 유용한 애노테이션을 제공해 개발을 더욱 편리하게 해준다.
- Spring Web : 스프링 웹 어플리케이션을 만들기 위해서는 필수적이다.
- Spring Data JPA : 스프링 JPA를 사용할 예정이므로 추가했다.
- H2 Database, MySQL Driver : 사용할 DB의 Driver을 추가했다.
이렇게 해서 generate를 눌러 다운로드 받으면 압축을 풀고 인텔리제이에서 build.gradle 파일을 통해 프로젝트를 연다.
build.gradle 파일을 통해 프로젝트를 열면 Dependencies가 모두 다운되고, 그 밖의 프로젝트를 시작 준비를 자동으로 해준다고 한다.
그럼 아래와 같은 build.gradle 파일을 확인할 수 있다.
plugins {
id 'org.springframework.boot' version '2.6.7' //스프링부트 버전
id 'io.spring.dependency-management' version '1.0.11.RELEASE' //의존성들을 관리해준다
id 'java'
}
group = 'project'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories { //각종 의존성드릉ㄹ 어떤 원격 저장소에서 받을지를 정한다
mavenCentral()
}
dependencies { //추가한 의존성들
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
runtimeOnly 'mysql:mysql-connector-java'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
이제 H2 데이터베이스와 연결을 확인하고 마치자.
먼저 H2 데이터베이스를 다운로드 받고 실행시킨다.
먼저 아래와 같이 입력하고 연결을 한다.
다음으로 아래와 같이 입력하고 연결을 하면 우리는 H2 데이터베이스 스키마를 만든 것이다.
이제 그러면 마지막으로 연결되었는지 확인을 해보자.
src/main/resources/application.yml 파일을 만들고 아래와 같이 작성한다.
spring:
data:
datasource:
url: jdbc:h2:tcp://localhost/~/project-backend
driver-class-name: org.h2.Driver
username: sa
password:
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
format_sql: true
show_sql: true
이렇게 연결을 하고 콘솔창을 확인해보자.
DB와 우리 스프링 부트 내장 서버를 연결했다.
필자는 개인적으로 PostMan을 써서 추가적으로 한번 더 확인했다.
이렇게 프로젝트를 위한 기초 세팅이 끝났다. 다음부터는 본격적으로 ERD 설계, API 디자인, 개발을 진행해보겠다.
뭔가 블로그에 글을 쓰면 호다닥 할 거 같아서 포스팅을 시작했습니다. 앞으로 더욱 더 열심히하자 아자아자 파이팅!!!!
댓글