test - Team-Wordi/Wordi GitHub Wiki
๐ก ์ ์ฒด์ ์ผ๋ก ๊ฐ์ฅ ์ต์ํ ํด์ ์ฐ์ ์ ์ผ๋กํ์ฌ ํ์ฉ ๊ธฐ์ ์ ์ ์ ํ์๋ค.
๋ฒ์ ๊ด๋ฆฌ ์์คํ
- Git
- SVN
- Mercurial
Git ์น ํธ์คํ ์๋น์ค
์ด์ ๊ด๋ฆฌ ๋๊ตฌ(์ด์ ํธ๋์ปค)
Git GUI
- Git: Git์ ๋ฒ์ ์ ์ค๋ ์ท์ผ๋ก ๊ด๋ฆฌํ์ฌ ์ฑ๋ฅ ์ด์๊ฐ ์ ๊ณ , ๋ธ๋์น๋ฅผ ๋์ ํ ์ ์๋ค. ๋ํ ๋ค๋ฅธ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ ๋นํด ๊ฐ์ฅ ์ต์ํ๋ค๋ ์ ์์ Git์ ์ ํํ๊ฒ ๋์๋ค.
- GitHub: GitHub๋ ๊ฐ์ฅ ๋์ค์ ์ธ ์น ํธ์คํ ์๋น์ค๋ก ํ์ฌ ๋ด๊ฒ ๊ฐ์ฅ ์ต์ํ ์๋น์ค์ด๋ค. ๋ํ, GitHub ์์ฒด์ ์ผ๋ก ๋ด์ฅ๋์ด ์๋ ์ด์ ํธ๋์ปค๋ฅผ ํฌํจํ ํ๋ถํ ์๋น์ค๋ฅผ ํ์ฉํ ์ ์๋ค๊ณ ํ๋จํ๋ค.
- GitHub Issues & Projects: GitHub ์์ฒด ๋ด์์ ํ์ฉํ ์ ์๋ค๋ ์ ์ด ๊ฐ์ฅ ํฌ๋ค. ๊ฐ ์ด์์ ๋ํด ์์ ์๋ฅผ assign ํ ์ ์์ผ๋ฉฐ, ์ปค๋ฎค๋์ผ์ด์ ๊ณผ ๋ผ๋ฒจ ํ์ฉ, ์ด์ ์ํ ๋ฑ์ ๊ตฌ๋ถํ๋ ๋ฑ ์ถฉ๋ถํ ๊ธฐ๋ฅ์ ํ ์ฉํ ์ ์๋ค๊ณ ํ๋จํ๋ค.
์ปดํจํ ํ์ ์ถ์ฒ
- PC
- ์๋ฒ์ฉ ํ๋์จ์ด๋ฅผ ๊ตฌ์ ํด ํ์๋ฒ ์ด์
- ์๋ฒํธ์คํ
- ํด๋ผ์ฐ๋ ํ๋ซํผ
ํด๋ผ์ฐ๋ ํ๋ซํผ
- AWS(Amazon Web Service)
- GCP(Google Cloud Platform)
- Microsoft Azure
์ปดํจํ ์์ง(AWS ๊ธฐ์ค)
- EC2(Elastic Compute Cloud)
- Beanstalk
- ECS(Elastic Container Service)
- ECS+Fargate
- Lightsail
- Lambda
๋ฐฐํฌ ์๋ํ ์๋น์ค
- Travis-CI
- CircleCI
- Amazon CodeBuild์ CodeDeploy๋ฅผ ํจ๊ป ์ฌ์ฉ
- Amazon CodeBuild๋ง ์ฌ์ฉ
- ํด๋ผ์ฐ๋ ํ๋ซํผ: ํ์ฌ ์๋น์ค๋ฅผ ๋ง๋๋ ๋จ๊ณ์์ ๊ฐ์ฅ ์ ๋์ ์ผ๋ก ์๋ฒ ํ๊ฒฝ์ ์ค์ ํ ์ ์์ผ๋ฉฐ, ๋น์ฉ ๋ํ ์ํฉ์ ๋ง๊ฒ ์ ํํ์ฌ ์๋ฒ๋ฅผ ๊ตฌ์ถํ ์ ์๋ค๋ ์ ์์ ํด๋ผ์ฐ๋ ํ๋ซํผ์ ์ ํํ์๋ค.
- AWS: ๋์ค์ ์ด๋ฉฐ ํ์์ ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉํ๊ณ ์ต์ํ AWS ํ๋ซํผ์ ํ์ฉํ์๋ค.
- EC2: ํ์ฌ ๊ฐ์ฅ ์ต์ํ ์ปดํจํ ์์ง์ด๋ค. ์ฒ์ ๋ฐ๋ชจ ๋ฒ์ ์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ณ ํ ์คํธ ํ๋ค๋ ์ ์์๋ ์ถฉ๋ถํ๋ค๊ณ ํ๋จํ์๋ค.
API ์ค๊ณ ์์น
- HTTP API
- REST API
- GraphQL
API ๋ฌธ์ํ ๋ฐฉ์
- Excel
- Swagger
- ์์ค์ฝ๋์ ๋ฌธ์ ์๋ฒ ๋ฉ
- ReDoc์ ์ง์ ๊ด๋ฆฌ
- ReDoc์ GitHub Pages(github.io)์์ ๊ด๋ฆฌ
- Slate๋ฅผ ์ง์ ๊ด๋ฆฌ
- Slate๋ฅผ GitHub Pages(github.io)์์ ๊ด๋ฆฌ
- GitBook
์ง๋ ฌํ ํฌ๋งท
- XML
- JSON
- YAML
- Protocol Buffer(Protobuf)
JSON key ๋ค์ด๋ฐ ๋ฃฐ
- ์ ๊ฒฝ์ฐ์ง ์๋๋ค.
ex) 'signindate'
- ๊ณต๋ฐฑ์ผ๋ก ๋ถ๋ฆฌํ๋ค.
ex) 'signin date'
- ์นด๋ฉ ์ผ์ด์ค(Camel Case)๋ฅผ ์ฌ์ฉํ๋ค.
ex) 'signinDate'
- ํ์ค์นผ ์ผ์ด์ค(Pascal Case)๋ฅผ ์ฌ์ฉํ๋ค.
ex) 'SigninDate'
- ์ค๋ค์ดํฌ ์ผ์ด์ค(Snake Case)๋ฅผ ์ฌ์ฉํ๋ค.
ex) 'signin_date'
- HTTP API: ์ฌ๊ธฐ์ ์๋ฏธํ๋ HTTP API๋ ๋์ค์ ์ผ๋ก ์ฌ์ฉ๋๋ REST API์ ์๋ฏธ์ด๋ค. ์ค์ REST API๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์๋ HATEOAS ์์น์ ์ง์ผ์ผํ๊ธฐ ๋๋ฌธ์ HTTP API๋ก๋ ์ถฉ๋ถํ๋ค๊ณ ํ๋จ๋์๋ค.
- Excel, SwaggerHub: ๊ฐ์ฅ ์ต์ํ ํด์ธ Excel์ ์ ํํ์๋ค. ์์ ์ ๋ฐ์ดํธ๋ฅผ ์ํด Google Sheets๋ฅผ ํ์ฉํ ์์ ์ด๋ค. ๋ํ, ์์ ๋ง์ผ๋ก API๋ฅผ ๋ช ์ธํ๋ ๋จ์ ์ ๋ณด์ํ๊ณ ์ Swagger๋ฅผ ํ์ฉํ๊ณ ์ ํ๋ค.
- JSON: ๊ฐ์ฅ ์ต์ํ ํฌ๋งท์ด๋ฉฐ, ํ ์ง๋ ฌํ ํฌ๋งท์ ๋นํด ๊ฒฝ๋ํ๋๊ณ , ๊ฐ๋ ์ฑ๋ ์ข๋ค. ๊ฒฐ์ ์ ์ผ๋ก ํ์ฝํ๋ ํ๋ก ํธ์๋ ๋ถ๋ JSON ํฌ๋งท์ ์ต์ํ ์ ์์ ์ ํํ๊ฒ ๋์๋ค.
- ์นด๋ฉ ์ผ์ด์ค: Java ๋ค์ด๋ฐ ์ปจ๋ฒค์ ์ ๊ฐ์ฅ ์ ํฉํ์ฌ ํ ๋ค์ด๋ฐ์ ๋นํด ์ฌ์ฉํ๊ธฐ ํธ๋ฆฌํ๋ฉฐ, ํ๋ก ํธ ๊ฐ๋ฐ์์ ์์ ํ์ ๊ฒฐ์ ํ์๋ค.
์ธ์ฆ ์ ๋ณด์ ์์น
- request body
- ์์ฒญ์ query parameter
- Cookie ํค๋
- Authorization ํค๋
์ธ์ฆ ์คํค๋ง
- Basic
- [๋นํ์ค] OAuth 1.0a๋ฅผ ์ฌ์ฉํ๋ Bearer
- OAuth 2.0์ ์ฌ์ฉํ๋ Bearer
- [๋นํ์ค] JWT, ๋๋ JWT๋ฅผ ์ฌ์ฉํ๋ Bearer
- Digest
- HOBA
- Authorization ํค๋: ์ธ์ฆ ๋ฐ์ดํฐ๋ ๋ฉํ ๋ฐ์ดํฐ ์ฑ๊ฒฉ์ด ๊ฐํด request body์ ์ด์ธ๋ฆฌ์ง ์์ผ๋ฉฐ, ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ์ ๊ฒฝ์ฐ ๋ณด์์ ์ข์ง ์๋ค. ๋ํ, ์ฟ ํค๋ ์ฑ ๊ฐ๋ฐ ๋ถ๋ถ์์๋ ํด๋ผ์ด์ธํธ๊ฐ ์ฟ ํค ์ ์ฅ์๋ฅผ ๋ฐ๋ก ๊ตฌํํด์ผํ๊ธฐ ๋๋ฌธ์ Authorization ํค๋๊ฐ ๊ฐ์ฅ ์ ํฉํ๋ค๊ณ ํ๋จํ๋ค.
- JWT: ๊ฐ์ฅ ์ต์ํ ๋ฐฉ๋ฒ์ด๋ฉฐ, ์ฝ๊ฒ ์ ๋ฌ๋ ์ ์๋ค. ์๋น์ค ๋ด์์ ๋ก๊ทธ์ธ ์ ์ง ์ ๋ณด์ ๋ํ ํ์์ฑ์ด ์์ผ๋ฉฐ, ์ธ์ ์ ๋ํ ๊ด๋ฆฌ ๋ถ๋ถ๊ณผ ์๋ฒ ์์์ ์ ์ฝํ ์ ์๋ค๋ ์ ์์ ์ ํํ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค
- RDB
- NoSQL
DB ํธ์คํ ์์น
- EC2
- RDS(Relational Database Service)
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง
- Aurora
- MySQL
- MariaDB
- PostgreSQL
- Oracle
- SQL Server
MySQL Driver(ํด๋ผ์ด์ธํธ)
- HeidlSQL
- MySQL Workbench
- DataGrip
- RDB: ๊ฐ์ฅ ์ต์ํ RDB๋ฅผ ํํ์๋ค. ๊ตฌํํ๋ ค๋ ์๋น์ค ํน์ฑ์ ํธ๋ํฝ์ด ์ง์ค๋๋ ์๋น์ค ๋ณด๋ค๋ ์์ ์ ์ธ ์๋น์ค๋ก ๊ฐ๋ ๊ฒ์ด ์ข์ ๊ฒ์ด๋ผ๊ณ ํ๋จํ์ฌ RDB๊ฐ ๋ ์ ํฉํ๋ค๊ณ ํ๋จํ๋ค.
- RDS: EC2์ ํธ์คํ ํ ๊ฒฝ์ฐ, ์๋ฒ ๋ฌธ์ ๊ฐ DB๊น์ง ์ํฅ์ ๋ฏธ์น ์ ์์ผ๋ฉฐ, ๋ฌด๋ฃ๋ก ์ ๊ณต๋๋ EC2์ ์ฑ๋ฅ์ ๊ณ ๋ คํ์ ๋ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ข๋ค๊ณ ํ๋จ๋์๋ค. ๋ฐ๋ผ์, DB๋ฅผ ์๋ฒ์ ๋ถ๋ฆฌํ RDS๋ฅผ ํ์ฉํ๋๊ฒ ์ ํฉํ๋ค๊ณ ํ๋จํ๋ค.
- MySQL: ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ์ผ๋ฉฐ, ์ต์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง์ด๊ธฐ์ ์ ํํ์๋ค.
- DataGrip: ๋ฐ์ดํฐ ์ถ์ถ๊ณผ ์ ์ฅ์ด ๊ฐํธํ๋ฉฐ, ์ฟผ๋ฆฌ ๋ฐ ๋ฐ์ดํฐ ์์ ์ ์ฅ ๊ธฐ๋ฅ, ์๋ ์์ฑ ๊ธฐ๋ฅ ๋ฑ ํธ๋ฆฌํ ๊ธฐ๋ฅ์ ๋ง์ด ๊ฐ์ถ๊ณ ์๋ค.
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
- Python
- Scala
- Java
- Go
- Node.js
ํ๋ ์์ํฌ
- Spring Boot
- Spirng Web
- Spring Security
- Spring Data
- Spring Batch
- Spring Cloud
DB ์ ๊ทผ ๊ธฐ์
- JDBC
- JdbcTemplate
- Mybatis
- JPA
- ์คํ๋ง ๋ฐ์ดํฐ JPA
- QueryDSL
์์กด์ฑ ๊ด๋ฆฌ ๋๊ตฌ
- .pip
- npm
- yarn
- gem
- maven
- gradle
๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Lombok
- Springfox Boot Starter
- Bean Validation
- Thymeleaf
- Java: ๊ฐ์ฅ ์ต์ํ ์ธ์ด์ด๋ค.
- Spring Boot: ๊ธฐ๋ณธ Spring์ ๋นํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌ, ์ค์ ์ ์๋ํ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ๊ด๋ฆฌ ์๋ํ, ํ ์คํธ ํ๊ฒฝ๊ณผ ๋ด์ฅ Tomcat ๋ฑ ํ๊ฒฝ ์ค์ ๋ถ๋ถ์์ ํธ๋ฆฌํ ๋ถ๋ถ์ด ๋ง๊ธฐ ๋๋ฌธ์ ์ ํํ๊ฒ ๋์๋ค.
- JPA: RDB์ ์ฌ์ฉํ๊ธฐ ์ ํฉํ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด์ ๋งคํํ์ฌ ๋ค๋ฃฐ ์ ์๋ค๋ ์ ์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค๊ณ ์๊ฐํจ. ๊ตฌํํ ์๋น์ค๊ฐ ํต๊ณ ์ฒ๋ฆฌ์ ๊ฐ์ ๋ณต์กํ ๋ก์ง์ด ํ์ํ ์๋น์ค๊ฐ ์๋๊ธฐ ๋๋ฌธ์ JPA ๋ด์์ ์ถฉ๋ถํ ๊ตฌํ์ด ๊ฐ๋ฅํ ์ ์๋ค๊ณ ์๊ฐํ์ฌ, ์์ฐ์ฑ๊ณผ ์ ์ง๋ณด์ ๋ฑ์ ์ด๋ฆฌ๊ณ ์ ํ๋ค.
- QueryDSL: JPA๋ง์ผ๋ก๋ ๋ค๋ฃจ๊ธฐ ํ๋ ๋์ ์ฟผ๋ฆฌ๋ฅผ ํจ๊ป ๋ค๋ฃจ๊ณ ์ ์ฌ์ฉํ ์์ ์ด๋ค.
- gradle: Java์ ๋ง๋ ์์กด์ฑ ๊ด๋ฆฌ ๋๊ตฌ์ด๋ฉฐ, maven์ ๋นํด ๊ด๋ฆฌ๊ฐ ์ฝ๊ณ , ๊ฐ๋ ์ฑ์ด ์ข๋ค๊ณ ํ๋จ. ๊ฒฐ์ ์ ์ผ๋ก ๊ฐ์ฅ ์ต์ํ ์์กด์ฑ ๊ด๋ฆฌ ๋๊ตฌ์ด๋ค.
- Lombok: ๋ณด๋ค ํธ๋ฆฌํ ์ด๋ ธํ ์ด์ ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ ์ํจ.
- Springfox Boot Starter: Swagger๋ฅผ ํตํ API ๋ฌธ์ ๊ด๋ฆฌ, ํ ์คํธ๋ฅผ ์ ์ฉํ๊ธฐ ์ํด ์ฌ์ฉ.
- Bean Validation: ๊ฒ์ฆ ์ฒ๋ฆฌ๋ฅผ ๊ฐ์ฅ ์์ฐ์ฑ ์๊ฒ, ํจ์จ์ ์ผ๋ก ํ ์ ์๋ค๊ณ ํ๋จ. ๊ฒ์ฆ๋ถ๋ฅผ DTO์์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๊ฒ์ฆ ๋ก์ง์ ์ ์ธํ ํด๋ฆฐ์ฝ๋๋ฅผ ๋ง๋ค ์ ์๋ค๊ณ ์๊ฐ๋๋ค.
์๊ฐ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ์
- Unix time
- Asia/Seoul ๊ธฐ์ค์ ์๊ฐ ๋ฌธ์์ด
- UTC ๊ธฐ์ค์ ์๊ฐ ๋ฌธ์์ด
- ISO 8601 format ๋ฌธ์์ด
์๊ฐ ๋ฐ์ดํฐ ํํ ๋ฐฉ์
- YYYY-MM-DD HH:mm:ss.SSS
- Unix time
- YY-MM-DD HH:mm:ss.SSS
- ISO 8601 format(YYYY-MM-DD
T
HH:mm:ss.SSSยฑhh:mm) - RFC 3339 format
- ์๊ฐ ๋ฐ์ดํฐ ์ ์ฅ: UTC๊ฐ ๊ตญ์ ํ์ค์๋ก์ ๊ธฐ์ค์ ์ด ๋๊ธฐ๋ ํ๋ฉฐ, ์๊ฐ์ ๋ค๋ฃจ๋ ์ง์ญ์ด ๊ธฐ์ค์ด ๋๋ค๋ ์ ์์ local timezone์ ์์กดํ๋ฉฐ ์๊ธธ ์ ์๋ ์ค์๋ฅผ ๋ฐฉ์ดํ๊ธฐ์ ์ข๋ค. ๋ํ ๋ฐ์ดํฐ ์ ์ฅ์ ๊ฒฝ์ฐ์๋ ์ผ๋ฐ์ ์ธ ์๊ฐ ๋ฐ์ดํฐ์ UTC๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ์ฐจ์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๋ํด์ง ISO 8601 ํ์ค์ ์ฌ์ฉํ๊ธฐ์๋ ๊ณผํ ๋ถ๋ถ์ด ์๋ค๊ณ ํ๋จํ๋ค.
- ์๊ฐ ๋ฐ์ดํฐ ํํ: ํด๋ผ์ด์ธํธ์ ์์ ํ, ์ ์ฅ๋ UTC๋ฅผ ํํ ๊ทธ๋๋ก ํ์ฉํ ์ ์๋ YYYY-MM-DD-HH:mm:ss.SSS ํํ ๋ฐฉ์์ ์ ํํ๋ค.