Skip to content

khu-bigdata-project-team-5/server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

94 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

INFoU Server🌐

INFoU

빅데이터λ₯Ό 기반으둜 λΆ„μ„ν•˜μ—¬ Udemy와 Inflearn κ°•μ’Œλ₯Ό λ°”νƒ•μœΌλ‘œ μ‹ λ’°μ„± μžˆλŠ” κ°•μ˜λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.


πŸ’πŸ» Introduction

ν•΄λ‹Ή ν”„λ‘œμ νŠΈλŠ” INFoUμ—μ„œ μ œκ³΅ν•˜λŠ” 데이터λ₯Ό 기반으둜 κ°•μ˜ μΆ”μ²œ μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•˜λŠ” ν”„λ‘œμ νŠΈμž…λ‹ˆλ‹€.

  • μ£Όμš”κΈ°λŠ₯
    • κ°•μ˜μ˜ ν‚€μ›Œλ“œ μ°ΎκΈ°
    • κ°•μ˜μ˜ ν‚€μ›Œλ“œλ₯Ό 기반으둜 λ‹€λ₯Έ κ°•μ˜ μΆ”μ²œ
    • ν‚€μ›Œλ“œλ³„ κ°•μ˜ 컀리큘럼 생성
    • λ‹€λ₯Έ μœ μ €μ˜ 컀리큘럼 쑰회
    • κ°•μ˜μ˜ κ°•μ˜λ ₯, κ°•μ˜μžλ£Œ, μ‹€μŠ΅, 평점, λ‚œμ΄λ„μ™€ κ°•μ˜ν‰μ˜ 긍정/λΆ€μ • 뢄석 κ²°κ³Όλ₯Ό 제곡

πŸš€ Version

java {
    sourceCompatibility = '17'
    targetCompatibility = '17'
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)
    }
}
plugins {
    id 'java'
    id 'org.springframework.boot' version '3.3.0'
    id 'io.spring.dependency-management' version '1.1.5'
}

πŸ› οΈ Tech Stack

μ‚¬μš©κΈ°μˆ  정보
Spring 3.3.0
Database AWS RDS(MySQL)
Instance AWS EC2(Ubuntu)
CI/CD Github Actions, AWS Elasticbeanstalk, Nginx
Build Tool Gradle
ERD StarUML, DataGrip
Java Java 17
Swagger(Springdoc) 2.0.2

πŸ“‚ Directory Architecture

β”œβ”€πŸ—‚οΈ .ebextensions_dev
β”œβ”€πŸ—‚οΈ .github/workflow
β”œβ”€πŸ—‚οΈ .platform
β”‚  β”œβ”€πŸ—‚οΈ src
β”‚  β”‚  β””β”€πŸ—‚οΈ main
β”‚  β”‚     β””β”€πŸ—‚οΈ java
β”‚  β”‚        β””β”€πŸ—‚οΈ khu/bigdata
β”‚  β”‚           β””β”€πŸ—‚οΈ infou
β”‚  β”‚              β”œβ”€πŸ—‚οΈ web
β”‚  β”‚              β”‚  β”œβ”€πŸ—‚οΈ controller
β”‚  β”‚              β”‚  β””β”€πŸ—‚οΈ dto
β”‚  β”‚              β”‚β”€πŸ—‚οΈ business
β”‚  β”‚              β”œβ”€πŸ—‚οΈ repository
β”‚  β”‚              β”œβ”€πŸ—‚οΈ implement
β”‚  β”‚              β”œβ”€πŸ—‚οΈ domain
β”‚  β”‚              β”œβ”€πŸ—‚οΈ config
β”‚  β”‚              β””β”€πŸ’½ InfouApplication.java
β”‚  β”‚     β””β”€πŸ—‚οΈ resources
β”‚  β”‚     β”‚ β””β”€πŸ’½ Application.yml
└─  β””β”€πŸ—‚οΈ build.gradle

🧐 Spring boot framework Explanation


  1. business:
  • λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ ν¬ν•¨ν•˜λŠ” λ””λ ‰ν† λ¦¬μž…λ‹ˆλ‹€. μ„œλΉ„μŠ€ λ ˆμ΄μ–΄λΌκ³ λ„ ν•˜λ©°, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ£Όμš” κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” μ½”λ“œλ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ‚¬μš©μž μš”μ²­μ„ μ²˜λ¦¬ν•˜κ³ , λ°μ΄ν„°λ² μ΄μŠ€μ™€ μƒν˜Έ μž‘μš©ν•˜λ©°, 도메인 객체λ₯Ό μ‘°μž‘ν•˜λŠ” μ½”λ“œκ°€ 이 디렉토리에 ν¬ν•¨λ©λ‹ˆλ‹€.
  1. config:
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ„€μ • νŒŒμΌμ„ ν¬ν•¨ν•˜λŠ” λ””λ ‰ν† λ¦¬μž…λ‹ˆλ‹€. Spring Boot μ„€μ • 클래슀, λ³΄μ•ˆ μ„€μ •, λ°μ΄ν„°λ² μ΄μŠ€ μ„€μ •, μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ‘œνΌν‹° 파일 등이 여기에 μœ„μΉ˜ν•©λ‹ˆλ‹€. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ „λ°˜μ μΈ μ„€μ • 및 ν™˜κ²½ ꡬ성을 λ‹΄λ‹Ήν•©λ‹ˆλ‹€.
  1. domain:
  • 도메인 λͺ¨λΈμ„ ν¬ν•¨ν•˜λŠ” λ””λ ‰ν† λ¦¬μž…λ‹ˆλ‹€. 주둜 μ—”ν„°ν‹° ν΄λž˜μŠ€κ°€ μœ„μΉ˜ν•˜λ©°, λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ”κ³Ό λ§€ν•‘λ˜λŠ” 객체λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. 이 λ””λ ‰ν† λ¦¬μ˜ ν΄λž˜μŠ€λ“€μ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ£Όμš” 데이터 ꡬ쑰λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
  1. implement:
  • λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μ‹€μ œλ‘œ κ΅¬ν˜„ν•˜λŠ” ν΄λž˜μŠ€λ“€μ΄ μœ„μΉ˜ν•©λ‹ˆλ‹€. μΈν„°νŽ˜μ΄μŠ€μ˜ κ΅¬ν˜„μ²΄κ°€ 이곳에 있으며, μ„œλΉ„μŠ€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜λŠ” ꡬ체적인 ν΄λž˜μŠ€λ“€μ΄ ν¬ν•¨λ©λ‹ˆλ‹€.
  1. repository:
  • 데이터 μ•‘μ„ΈμŠ€ λ ˆμ΄μ–΄λ₯Ό λ‹΄λ‹Ήν•˜λŠ” λ””λ ‰ν† λ¦¬μž…λ‹ˆλ‹€. JPA 리포지토리 μΈν„°νŽ˜μ΄μŠ€λ‚˜, λ°μ΄ν„°λ² μ΄μŠ€μ™€ μƒν˜Έ μž‘μš©ν•˜λŠ” μ½”λ“œκ°€ μœ„μΉ˜ν•©λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€ CRUD(Create, Read, Update, Delete) μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.
  1. web:
  • μ›Ή λ ˆμ΄μ–΄λ₯Ό λ‹΄λ‹Ήν•˜λŠ” λ””λ ‰ν† λ¦¬μž…λ‹ˆλ‹€. 주둜 μ›Ή μš”μ²­μ„ μ²˜λ¦¬ν•˜λŠ” μ»¨νŠΈλ‘€λŸ¬κ°€ 이곳에 μœ„μΉ˜ν•©λ‹ˆλ‹€.
  1. controller:
    • HTTP μš”μ²­μ„ μ²˜λ¦¬ν•˜κ³ , λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ ν˜ΈμΆœν•˜μ—¬ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜λŠ” ν΄λž˜μŠ€λ“€μ΄ μœ„μΉ˜ν•©λ‹ˆλ‹€. μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€μ™€ μƒν˜Έ μž‘μš©ν•˜λ©°, 주둜 REST API μ—”λ“œν¬μΈνŠΈλ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.
  2. dto:
    • 데이터 전솑 객체(Data Transfer Object)λ₯Ό ν¬ν•¨ν•˜λŠ” λ””λ ‰ν† λ¦¬μž…λ‹ˆλ‹€. 주둜 μ»¨νŠΈλ‘€λŸ¬μ™€ μ„œλΉ„μŠ€ λ ˆμ΄μ–΄ κ°„μ˜ 데이터 전솑을 λͺ©μ μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€. 도메인 λͺ¨λΈκ³ΌλŠ” λ³„λ„λ‘œ, ν΄λΌμ΄μ–ΈνŠΈμ™€ μƒν˜Έμž‘μš©ν•˜κΈ° μœ„ν•œ 데이터 ꡬ쑰λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.

🌐 Server Infra

architecture(infou)

  • ci/cdλŠ” Git Actionκ³Ό AWS Elastic Beanstalk을 ν™œμš©ν–ˆμŠ΅λ‹ˆλ‹€.
  • cloud DBλŠ” AWS RDSλ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.
  • AWS VPCλ₯Ό ν™œμš©ν•˜μ—¬ μ„œλ²„ DBλ₯Ό Vpc λ‚΄μ˜ subnet에 ν• λ‹Ήν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • Reverse proxyλŠ” Nginx을 ν™œμš©ν•˜μ—¬ κ΅¬μΆ•ν–ˆμŠ΅λ‹ˆλ‹€.
  • 도메인(infou.store) 등둝은 가비아와 AWS Route 53을 ν™œμš©ν•˜μ—¬ API μ„œλ²„λŠ” μ„œλΈŒ 도메인(dev.infou.store)을 ν™œμš©ν–ˆμŠ΅λ‹ˆλ‹€.

πŸ“œ Swagger

API-swagger

🏒 Convention

Tag Type content
✨feat κΈ°λŠ₯(feature)
πŸ“docs λ¬Έμ„œ μž‘μ—… (documentation)
πŸ›fix 버그 μˆ˜μ •
πŸš‘hotfix κΈ΄κΈ‰ 버그 μˆ˜μ •
♻️refactor μ½”λ“œ λ¦¬νŒ©ν„°λ§(가독성 ν–₯상)
πŸ‘·ci ci νŒŒμ΄ν”„λΌμΈ ꡬ좕 κ΄€λ ¨
πŸ’šci/cd ci λΉŒλ“œ μˆ˜μ • 및 deployment
chore 관리(maintain), 핡심 λ‚΄μš©μ€ μ•„λ‹Œ 기타 λ³€κ²½

About

πŸš€ INFoU server repo

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages