- κ°λ° κΈ°κ°
- μ½λ 컨벀μ κ·μΉ
- νλ‘μ νΈ κ°μ λ° μλΉμ€ κ°μ
- μꡬμ¬ν λΆμ
- νλ‘μ νΈ λμ μμ
- νλ‘μ νΈ μΌμ κ΄λ¦¬
- ERD
- νλ‘μ νΈ ν¨ν€μ§ ꡬ쑰
- API λͺ μΈ
- ν μ€νΈ
- TIL λ° νκ³
2023-11-09 ~ 2023-11-18 (10μΌ)
μμΈν (ν΄λ¦)
λ€μκ³Ό κ°μ΄ μλ΅ νμμ μ ν©λλ€.
public class ApiResponse {
private static final String STATUS_SUCCESS = "success";
private static final String STATUS_FAIL = "fail";
private static final String STATUS_ERROR = "error";
...
}//μ±κ³΅
{
"status": "success",
"message": null,
"data": {
data1
}
}
//μΌλ° μλ¬
{
"status": "fail",
"message": "fail message",
"data": null
}
//μμΈ λ°μ
{
"status": "error",
"message": "error message",
"data": null
}
-
Commit message
- κ΅¬κΈ μλ° μ»¨λ²€μ
-
Branch name
- Github λΈλμΉ μ λ΅
- issue Name λμΌ
-
issue & Pull Request Template μ¬μ©
- μ§μ λ ν νλ¦Ώμ μ¬μ©νμ¬, μ€λͺ κ³Ό ν μΌ λ±μ λͺ μνκΈ°
-
Git Projects μ¬μ©
- Git Projectsλ₯Ό μ¬μ©νμ¬, μ§νμν© μκ°ννκΈ°
- μλμ κ°μ νμμΌλ‘ μ£Όμλ¬κΈ°
/**
* λμ κΈ°λ₯ μ€λͺ
*
* @param νλΌλ―Έν° λͺ
νλΌλ―Έν°μ κ΄ν μ€λͺ
* ...
* @return λ°ν μ€λͺ
*/
public νμ
λ©μλλͺ
or ν΄λμ€λͺ
(νλΌλ―Έν° νμ
,νλΌλ―Έν° λͺ
){- ꡬννμ§ λͺ»ν λΆλΆ
TODOλ‘ λ¨κΈ°κΈ°
//TODO or /** TODO- λͺ¨λ ν΄λμ€μ λ©μλ, λ³μμλ μ£Όμ λ¬κΈ°
public class ν΄λμ€λͺ
{
//...
/**
* λ³μλͺ
μ€λͺ
(Entityμ id λ±)
*/
private Long id;λ³Έ μλΉμ€λ μ¬μ©μλ€μ΄ κ°μΈ μ¬λ¬΄λ₯Ό κ΄λ¦¬νκ³ μ§μΆμ μΆμ νλ λ° λμμ μ£Όλ μλΉμ€μ λλ€.
-
μ¬μ©μλ€μ΄ μμ°μ μ€μ νκ³ μ§μΆμ λͺ¨λν°λ§νλ©° μ¬λ¬΄ λͺ©νλ₯Ό λ¬μ±νλ λ° λμμ΄ λ©λλ€.
-
μ¬λ¬ ν΅κ³λ₯Ό νμΈνλ©΄μ, λ§€μΌ μ§μΆ 컨μ€ν μ λ°μ μλΉ μ΅κ΄μ λ°κΎΈλ λ° λμμ΄ λ©λλ€.
μλΉμ€ κ°μ μμΈν (ν΄λ¦)
#### 1. νμμ νμκ°μ
μ ν΄μΌ μλΉμ€λ₯Ό μ΄μ©ν μ μμ΅λλ€.
- 볡μ‘ν μ μ°¨ μμ΄ νμκ°μ
μ΄ κ°λ₯ν©λλ€.
#### 2. μμ° μ€μ λ° μΆμ² μλΉμ€
- μλ³ μ΄ μμ°μ μ€μ ν©λλ€.
- λ³Έ μλΉμ€λ μΉ΄ν
κ³ λ¦¬ λ³ μμ°μ μΆμ²νμ¬ μ¬μ©μμ κ³Όλ€ μ§μΆμ λ°©μ§ν μ μμ΅λλ€.
#### 3. μ§μΆ μμ±
- μ¬μ©μλ μ§μΆ μ κΈμ‘, μΉ΄ν
κ³ λ¦¬ λ±μ μ§μ νμ¬ λ±λ‘ ν©λλ€.
- μΈμ λ μ§ μμ λ° μμ ν μ μμ΅λλ€.
#### 4. μ§μΆ 컨μ€ν
- μλ³ μ€μ ν μμ°μ κΈ°μ€μΌλ‘ μ€λ μλΉ κ°λ₯ν μ§μΆ μ μλ €μ€λλ€.
- λ§€μΌ λ°μν μ§μΆ μ μΉ΄ν
κ³ λ¦¬ λ³λ‘ μλ΄λ°μ΅λλ€.
#### 5. μ§μΆ ν΅κ³
- `μ§λ λ¬ λλΉ` , `μ§λ μμΌ λλΉ`, `λ€λ₯Έ μ μ λλΉ` λ± μ¬λ¬ κΈ°μ€ μΉ΄ν
κ³ λ¦¬ λ³ μ§μΆ ν΅κ³λ₯Ό νμΈ ν μ μμ΅λλ€.μλΉμ€ κ°μμ λ§κ² μꡬμ¬νμ λΆμνμ¬ μμ±νμμ΅λλ€.
κ°λ° μ€ μλ‘μ΄ μλ¬Έμ΄ λ€λ©΄, λ€μ κΈ°λ‘νμμ΅λλ€.
μꡬμ¬ν λΆμ μμΈν (ν΄λ¦)
### 1. μ μ
1. μ¬μ©μ νμκ°μ
1. `κ³μ λͺ
`, `ν¨μ€μλ` μ
λ ₯νμ¬ νμκ°μ
2. μ¬μ©μ λ‘κ·ΈμΈ
1. λ‘κ·ΈμΈμ `JWT` λ°κΈ
2. μ΄ν λͺ¨λ API μμ² Headerμ JWT ν¬ν¨ ν μ ν¨μ± κ²μ¦ νμ
3. μ¬μ©μ λ‘κ·Έμμ
1. λ‘κ·Έμμμ DBμ μλ Refresh ν ν° μμ
### 2. μμ°μ€μ λ° μ€κ³
1. μ§μΆ μΉ΄ν
κ³ λ¦¬ λͺ©λ‘
1. `μλΉ` , `κ΅ν΅` λ± μΌλ°μ μΈ μ§μΆ μΉ΄ν
κ³ λ¦¬ λͺ©λ‘ λ°ν
2. μμ° μ€μ
1. `μΉ΄ν
κ³ λ¦¬`, `μμ°` λ‘ μ€μ .
2. μμ° μ€κ³ μΆμ² μμ€ν
(API)
- `μΉ΄ν
κ³ λ¦¬` λ₯Ό μ§μ μν λ, `μΉ΄ν
κ³ λ¦¬` λ³ λ°°λΆ κΈμ‘ μΆμ².
- κΈ°μ‘΄ λͺ¨λ μ μ λ€μ μΉ΄ν
κ³ λ¦¬ λ³ μμ°μ ν΅κ³λ₯Ό ꡬν΄, μλμΌλ‘ μΉ΄ν
κ³ λ¦¬μ λ°°λΆ.
- μ΄λ, ν΅κ³κ° 10νλ‘ μ΄νμΈ μΉ΄ν
κ³ λ¦¬λ€μ λͺ¨λ λ¬Άμ΄ κΈ°νλ‘ μ 곡.
- κ³μ°μ
- `(μμ° * μΉ΄ν
κ³ λ¦¬μ ν΅κ³(((μΉ΄ν
κ³ λ¦¬μ μ΄ μμ° κΈμ‘)/(μ 체 μ΄ μμ° κΈμ‘))* 100)) /100`
3. μμ /μμ κ°λ₯
### 3. μ§μΆ κΈ°λ‘
1. μ§μΆ μμ±
1. `μ§μΆ μΌμ`, `μ§μΆ κΈμ‘`, `μΉ΄ν
κ³ λ¦¬`, `λ©λͺ¨`, `ν©κ³μ μΈμ¬λΆ` νμ ν¬ν¨
2. μΆκ°μ μΈ νλ μ¬μ© κ°λ₯
2. μ§μΆ CRUD
1. `μμ±`, `μμ `, `μ½κΈ°(μμΈ)`, `μ½κΈ°(λͺ©λ‘)`, `μμ `, `ν©κ³μ μΈ λ³κ²½`
3. μ§μΆ μ½κΈ°(λͺ©λ‘)
1. μ‘°ν κΈ°μ€: `κΈ°κ°(νμ μ
λ ₯)`, `μΉ΄ν
κ³ λ¦¬`, `κΈμ‘(μ΅μ, μ΅λ κΈμ‘)`
2. μ‘°νλ λͺ¨λ μ§μΆμ `μ§μΆ ν©κ³`, `μΉ΄ν
κ³ λ¦¬ λ³ μ§μΆ ν©κ³` ν¬ν¨
3. `ν©κ³μ μΈ` μ²λ¦¬ν μ§μΆμ λͺ©λ‘μλ ν¬ν¨λμ§λ§, λͺ¨λ `μ§μΆ ν©κ³`μμλ μ μΈ
4. νμ΄μ§ κΈ°λ₯ ν¬ν¨
### 4. μ§μΆ 컨μ€ν
1. μ€λ μ§μΆ κ°λ₯ν κΈμ‘ μΆμ²
1. `μλ³` μμ°μ λ§μ‘± μν€λ μ€λ μ¬μ©κ°λ₯ν `μ΄μ‘`κ³Ό `μΉ΄ν
κ³ λ¦¬ λ³ κΈμ‘` μΆμ²
2. μ΄λ² λ¬μ `λ¨μ μΌμ` κ³ λ €
3. 0μ λλ μμμ΄λ©΄ μλκ³ `μ΅μ μΆμ² κΈμ‘`μ μ€μ
2. μ μ μν©μ λ§λ `μ‘°μΈ λ©νΈ`
κΈ°μ€μΉ κ³μ° = `μ§κΈκΉμ§ μ¬μ©ν μ§μΆ λΉμ¨ κ³μ°` / `μλ μ¬μ©ν΄μΌ ν μμ°`
1. λ§€λ¬ 1μΌ μΌ λ
- μ΄λ² λ¬μλ μ΄μ¬ν μμ°κ΄λ¦¬λ₯Ό ν΄λ΄μ!
2. μ μλΌκ³ μμ λ (κΈ°μ€μΉ 1.3μ΄μ)
- μ μλΌκ³ μμ΄μ. νλͺ
ν μλΉλ₯Ό νκ³ κ³μλ€μ
3. μ λΉν μ¬μ© μ€ μΌ λ (κΈ°μ€μΉ 1.3 ~ 1.0 μ΄μ)
- μ λΉν μ¬μ© μ€μ΄μλ€μ. μ‘°μ λ μλΉλ μ€μν΄μ
4. κΈ°μ€μ λμμ λ (κΈ°μ€μΉ 1.0 λ―Έλ§)
- κΈ°μ€μ μ‘°κΈ λμμ΄μ. μ§μΆμ λ€μ κ²ν ν΄λ³΄λ κ²λ μ’κ² μ΄μ.
5. μμ°μ μ΄κ³Όνμ λ (κΈ°μ€μΉ 0.0)
- μμ°μ μ΄κ³Όνμ΄μ. μλΉ ν¨ν΄μ λ€μ μ΄ν΄λ³΄λ κ² μ’κ² μ΄μ.
3. 100μ λ¨μ `λ°μ¬λ¦Όν κΈμ‘`μΌλ‘ μΆμ²
4. μ€μΌμ₯΄λ¬ λ° μΉν
μΌλ‘ `μλ` ꡬν (μ ν μ¬ν)
5. μ€λ μ§μΆν λ΄μ© μλ΄
1. `μ΄μ‘`, `μΉ΄ν
κ³ λ¦¬ λ³ κΈμ‘` μλ΄
2. `μ μ κΈμ‘`, `μ§μΆ κΈμ‘`, `μνλ` λ₯Ό μΉ΄ν
κ³ λ¦¬ λ³λ‘ μλ΄
### 5. μ§μΆ ν΅κ³
> μ¬μ©μμ ν΅κ³λ°μ΄ν° μμ±μ μν΄ Dummy λ°μ΄ν°λ₯Ό μμ±ν©λλ€.
- `μ§λ λ¬` λλΉ `μ΄μ‘`, `μΉ΄ν
κ³ λ¦¬ λ³` μλΉμ¨
- μ§λ λ¬μ μ€λ μΌμ°¨κΉμ§ ν΄λΉνλ κ³Όκ±° λͺ¨λ λ°μ΄ν° κΈ°λ‘ λλΉ
- `μ§λ μμΌ` λλΉ μλΉμ¨
- μ€λ μμΌμ ν΄λΉλλ κ³Όκ±° λͺ¨λ λ°μ΄ν° κΈ°λ‘ λλΉ
- `λ€λ₯Έ μ μ ` λλΉ μλΉμ¨
- λ€λ₯Έ μ μ μ μ€λμ ν΄λΉνλ μμ°
- λ€λ₯Έ μ μ μ μλΉμ¨κ³Ό λμ μλΉμ¨ λν νκ· λΉμ¨
### 6. μΆκ°
- Docker μ μ©
- AWS EC2, RDSλ₯Ό μ΄μ©ν λ°°ν¬
- Discord μλ μ¬μ©
### + μλ¬Έ
#### 1. κΈ°μ‘΄ λͺ¨λ μ μ λ€μ μΉ΄ν
κ³ λ¦¬ λ³ μμ°μ ν΅κ³λ₯Ό ꡬν λ, κ³μ°νλλ° μ€λκ±Έλ¦¬μ§ μμκΉ?
- λ§μ½ μλΉμ€κ° μ»€μ§ κ²μ μμνλ©΄, μΉ΄ν
κ³ λ¦¬ λ³λ‘ λͺ¨λ μ μ λ€μ μ¬μ© %λ₯Ό κ°μ§ 컬λΌμΌλ‘ κ΄λ¦¬ ν μ μμ κ² κ°λ€.
#### 2. μμ° μ€κ³ μΆμ² μμ€ν
μμ κΌ νμμ΄ μꡬν λμ λ± λ§κ² μΆμ²ν΄μ€μΌν κΉ?
- κ²°κ΅ μμμ μΌλ‘ λ¨μ΄μ§μ, 100 λ¨μλ‘ μ ννκ² μ£Όλ건 λΆκ°λ₯.
- λκ°μ§ κ²½μ°λ‘ ꡬν κ°λ₯
1. μꡬν λμμ +- 300μ μ€μ°¨ λ°μνμ§λ§, μ νν νΌμΌνΈλ‘ μΆμ². (μ±ν)
2. λμ λ± λ§κ² μΆμ²νμ§λ§, μ νν νΌμΌνΈλ μλ.Git Projects μ¬μ©
Erd Cloud
μμΈν (ν΄λ¦)
src
ββ docs
β ββ asciidoc
ββ main
β ββ java
β β ββ com
β β ββ personal
β β ββ smartbudgetcraft
β β ββ domain
β β β ββ auth
β β β β ββ api
β β β β ββ application
β β β β ββ security
β β β ββ category
β β β β ββ cost
β β β β ββ dao
β β β β ββ entity
β β β ββ deposit
β β β β ββ api
β β β β ββ application
β β β β ββ dao
β β β β ββ dto
β β β β β ββ request
β β β β β ββ response
β β β β ββ entity
β β β ββ expenditure
β β β β ββ api
β β β β ββ application
β β β β ββ constant
β β β β ββ dao
β β β β β ββ querydsl
β β β β ββ dto
β β β β β ββ request
β β β β β ββ response
β β β β ββ entity
β β β ββ member
β β β ββ api
β β β ββ application
β β β ββ dao
β β β β ββ budgettracking
β β β ββ dto
β β β β ββ request
β β β β ββ response
β β β ββ entity
β β β ββ budgettracking
β β ββ global
β β β ββ config
β β β β ββ jpa
β β β β ββ p6spy
β β β β ββ redis
β β β β β ββ dao
β β β β ββ security
β β β β β ββ annotation
β β β β β ββ data
β β β β β ββ filter
β β β β β ββ handler
β β β β ββ valid
β β β β β ββ annotation
β β β β ββ web
β β β ββ dto
β β β β ββ response
β β β ββ entity
β β β ββ error
β β β ββ external
β β β β ββ discord
β β β β ββ api
β β β β ββ application
β β β ββ schedule
β β ββ SmartBudgetCraftApplication.java
β ββ resources
...
Spring Rest Docs κΈ°λ° API λͺ μΈμ
Mockito & JUnit5 κΈ°λ° κ³μΈ΅λ³ λ¨μ
N+1μ ν΄κ²°νλ BatchSizeμ fetchJoinμ μ°¨μ΄λ 무μμΌκΉ?







