프로젝트

개인 프로젝트 시작

Debin 2022. 5. 2.
반응형

이번에 개인 프로젝트를 시작하려고 합니다.

일단은 게시판을 구체적으로 만들어보고 본인이 생각해 둔 프로젝트 기능이 있는데 그것을 구현해보려고 합니다.

전체적인 기술 스택

  • 클라우드 - 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 프로젝트를 생성한다.

https://start.spring.io/ 

필자는 아래와 같이 설정했다.

개인 프로젝트 시작 - 프로젝트 시작 - 모든 영역
스프링 부트 프로젝트 생성

  • 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 데이터베이스 스키마를 만든 것이다.

개인 프로젝트 시작 - 프로젝트 시작 - 모든 영역
개인 프로젝트 시작 - 프로젝트 시작 - 모든 영역
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

이렇게 연결을 하고 콘솔창을 확인해보자.

개인 프로젝트 시작 - 프로젝트 시작 - 모든 영역
연결을 성공한 모습 SQL이 나간다.

DB와 우리 스프링 부트 내장 서버를 연결했다.

필자는 개인적으로 PostMan을 써서 추가적으로 한번 더 확인했다.

이렇게 프로젝트를 위한 기초 세팅이 끝났다. 다음부터는 본격적으로 ERD 설계, API 디자인, 개발을 진행해보겠다.

 

뭔가 블로그에 글을 쓰면 호다닥 할 거 같아서 포스팅을 시작했습니다. 앞으로 더욱 더 열심히하자 아자아자 파이팅!!!!

반응형

댓글