Skip to content

PlayMaker-S/Sports-IT-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

1. Introduce ๐Ÿ™Œ

Hi there ! ๐Ÿ‘‹ย  ๋ณธ Repository๋Š” ์Šคํฌ์ธ ๋Œ€ํšŒ ์šด์˜๊ด€๋ฆฌ ์†”๋ฃจ์…˜ Sports-IT์˜ ๋ฐฑ์—”๋“œ ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ๐Ÿ™‹โ€โ™‚๏ธย ๐Ÿ™‹โ€โ™€๏ธ

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” JAVA๋ฅผ ํ™œ์šฉํ•˜์—ฌ SPRING BOOT ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์งœ์—ฌ์ง„ RESTful API ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค ๐Ÿค“

๊ธฐ๋ณธ์ ์œผ๋กœ Controller, Service, Repository๋กœ ๊ตฌ์„ฑ๋œ Layered Architecture๋กœ ์งœ์—ฌ์ง„ ์ฝ”๋“œ๋กœ Member, Competition ๋“ฑ ๊ฐ๊ฐ์˜ Domain์— ๋”ฐ๋ผ ๊ฐ ๊ณ„์ธต๋“ค์ด ๊ตฌ๋ถ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ“š

๋ณธ ํ”„๋กœ์ ํŠธ์˜ ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ๊ฐœ๊ด„์ ์œผ๋กœ ์ •๋ฆฌํ•˜์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค ๐Ÿง

2. ์‹œ์ž‘ ๊ฐ€์ด๋“œ ๐ŸŽฌ

Requirements

  • OS : Ubuntu 22.04
  • JAVA : openjdk 17.0.7
  • MySQL : 8.0.32 (AWS RDS ์„œ๋ฒ„ ์—ฐ๋™ ์‚ฌ์šฉ์ค‘)
  • Docker : 24.0.2
  • Spring Boot : 3.0.3
  • Gradle : 7.6.1

Installation ๐Ÿ’ป

GitHub์œผ๋กœ ์‹œ์ž‘ํ•˜๊ธฐ ๐Ÿ™

1. Git clone

$ git clone https://github.com/PlayMaker-S/Sports-IT-API.git

2. Build

$ cd SportsIT/
$ ./gradlew build
$ java -jar build.libs/SportsIT-0.0.1-SNAPSHOT
$ nohup java -jar build.libs/SportsIT-0.0.1-SNAPSHOT & [BG ์‹คํ–‰]

Docker๋กœ ์‹œ์ž‘ํ•˜๊ธฐ ๐Ÿณ

$ docker pull gmk0904/sports-it-api:latest
$ docker ps -q --filter name=sports-it-api | grep -q . && docker rm -f 
  \$(docker ps -aq --filter name=sports-it-api) [ํ˜„์žฌ ๋™์ผํ•œ ์ด๋ฆ„์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰์ค‘์ด๋ผ๋ฉด ์ข…๋ฃŒ]
$ docker run -d -p 80:8080 -v {resource ๋””๋ ‰ํ† ๋ฆฌ ์œ„์น˜}:/src/main/resources --name sports-it-api gmk0904/sports-it-api:latest

Start Locally ๐Ÿ 

application.properties ๐Ÿ“ƒ

### MySQL ###
spring.datasource.url=jdbc:mysql://{mysql hostname:port/schema}
spring.datasource.username={username}
spring.datasource.password={password}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

### JPA ###
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.platform=org.hibernate.dialect.MySQLDialect

### JWT ###
jwt.header=Authorization
jwt.prefix=Bearer
jwt.secret={jwt-secret}
jwt.token-validity-in-seconds=86400

### S3 ###
cloud.aws.credentials.accessKey={S3 Access-key}
cloud.aws.credentials.secretKey={S3 Secret-key}
cloud.aws.s3.bucket={S3 Bucket Name}
cloud.aws.region.static={S3 Region}
cloud.aws.stack.auto-=false

### OnePort ###
oneport.apikey={Oneport API-key}
oneport.secret={Oneport Secret-key}
oneport.imp.uid={Oneport imp-uid}

Resources

  • API ์ธ์Šคํ„ด์Šค ์‹คํ–‰์„ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋“ค์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ํŒŒ์ผ๋“ค์„ ์ƒ์„ฑ/๋‹ค์šด๋ฐ›์•„ src/main/resources ๋ฐ‘์— ์ €์žฅํ•ด์ฃผ์„ธ์š”.
  • docker run ์‚ฌ์šฉ์‹œ ๋ณ„๋„์˜ resources ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ํ›„ -v ์˜ต์…˜์œผ๋กœ ์ƒ์„ฑํ•œ resources ๋””๋ ‰ํ† ๋ฆฌ ์œ„์น˜๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.

firebase-adminsjdk.json : FireStore๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค๋ฅผ ๋ฐœ๊ธ‰

application.properties : ์œ„์˜ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜์—ฌ ์ €์žฅ

3. ๊ธฐ์ˆ  ์Šคํƒ (Backend) ๐Ÿฅธ

Envirionment

Docs

Development

Test

Communication

4. API ๋ช…์„ธ์„œ

5. Test Driven Development

Junit5

6. Continual Integration / Continual Deployment

Jenkins CI/CD Pipeline

  • ์ง€์† ํ†ตํ•ฉ/๋ฐฐํฌ๋ฅผ ์œ„ํ•ด Jenkins ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • CI/CD Pipeine
    • Release Branch์— Merge ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ
    • Jenkins ์„œ๋ฒ„๊ฐ€ GitHub webhook์„ ๊ฐ์ง€ํ•ด Docker Image๋ฅผ ๋นŒ๋“œ
    • API ์„œ๋ฒ„์—์„œ Image๋ฅผ Pull ํ•œ ๋’ค ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰

CICD ํ”ผ๊ทœ์–ด

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •