๐จโ๐ป WooJin Choi (elsiff)
Spring
๊ณผ Java/Kotlin
์ ๊ด์ฌ์ด ๋ง๊ณ ์๋ก์ด ๊ธฐ์ ์ ์ข์ํ๋ ๊ฐ๋ฐ์์
๋๋ค.
๐ง Contact: elsiff1002@gmail.com
๐ Projects
bistroad
๋งค์ฅ ๊ณ ๊ฐ์๊ฒ ๋ฉ๋ด์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๋ชจ๋ฐ์ผ ๋ฉ๋ดํ ํ๋ซํผ
๐ ํ๋ก์ ํธ ๊ฐ์
- ๊ต๋ด 2020 MY์บก์คํค ํ๋ก์ ํธ
- ์๋น์๋ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ๋ก ๋งค์ฅ ๋ด
QR์ฝ๋
๋ฅผ ํตํด ์ ์ํ ์นํ์ด์ง์์๋ฉ๋ดํ
์ ํ์ธํ๊ณ , ๋ถ๊ฐ์ ์ธ ์ฑ ์ค์น๋ฅผ ํตํด๊ฐ๋จํ ์ฃผ๋ฌธ(๊ฒฐ์ ์์ด ์ ์ฃผ์๊ฒ ์๋ฆผ)
์ ์งํํ ์ ์์- ์ฑ ์ค์น ์, ๋งค์ฅ์ ๋ค์ด์ฌ ๋ ํธ์ ์๋ฆผ์ผ๋ก
๋ฉ๋ดํ
์๋ด - ์ฑ ์ค์น ์, ๋งค์ฅ์ ๋๊ฐ ๋ ํธ์ ์๋ฆผ์ผ๋ก
์ฌ์ฉ์ ๋ฆฌ๋ทฐ
์์ฑ ์ ๋
- ์ฑ ์ค์น ์, ๋งค์ฅ์ ๋ค์ด์ฌ ๋ ํธ์ ์๋ฆผ์ผ๋ก
- ์ ์ฃผ๋ ํ๋ซํผ์ ์์ ์
๋งค์ฅ
์ ๋ฑ๋กํ๊ณ ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ,์ฌ์ฉ์ ๋ฆฌ๋ทฐ
๋๋ฉ๋ด ์ฃผ๋ฌธ ํ์
๋ฑ์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์์งํ ์ ์์ - ๋ถํน์ ๋ค์๋ฅผ ์ํ ์จ๋ผ์ธ ์๋น์ค๋ก, ๋๋ฉ์ธ ๋ชจ๋ธ ๋ณ๊ฒฝ๊ณผ ํธ๋ํฝ ๋ถํ๋ฅผ ์ฌ์ ์ ๊ณ ๋ คํ์ฌ ์ค๊ณ
๐ ์งํ ๊ธฐ๊ฐ
- 2020๋ 6์ ~ 2020๋ 11์ (์งํ์ค)
โ๏ธ ์ํ ์ญํ
๐โ- ๋ฐฑ์๋ ์๋ฒ ๊ฐ๋ฐ
๐ ๏ธ ์ฌ์ฉ ๊ธฐ์
- Kubernetes์ Docker๋ฅผ ํ์ฉํ MSA ๊ตฌํ
- Spring / Spring Boot (Security, Cloud Gateway, Cloud Kubernetes, Data MongoDB)
- Kotlin
- MongoDB
- GCP (GKE, GCB, GCR, GCS)
๐ ๋ฆฌํฌ์งํฐ๋ฆฌ
- https://github.com/Yaneodoo/bistroad-gateway-service
- https://github.com/Yaneodoo/bistroad-user-service
- https://github.com/Yaneodoo/bistroad-store-service
- https://github.com/Yaneodoo/bistroad-order-service
- https://github.com/Yaneodoo/bistroad-review-service
- https://github.com/Yaneodoo/bistroad-auth-service
- https://github.com/Yaneodoo/bistroad-swagger-service
๐ ํ๋ก์ ํธ ์๋ฃ
smart-healthcare
์ธ๊ณต์ง๋ฅ ๋์ ์ธ์๊ณผ ์์ ์ธ์์ ํ์ฉํ ์ค๋งํธ ํฌ์ค์ผ์ด ๋์ฌ ๊ด๋ฆฌ ํ๋ซํผ
๐ ํ๋ก์ ํธ ๊ฐ์
- ๊ต๋ด 2019 ์ฐํ์ฐ๊ณ SWํ๋ก์ ํธ
- ๊ฑด๊ฐ ์ ๋ณด์ ์์ฌ, ์ด๋ ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๊ณ ํต๊ณ์ ๊ฐ์ ํผ๋๋ฐฑ ์ ๊ณต
๋์ฌ ๊ด๋ฆฌ ๊ธฐ๋ฅ
: ์ฒด์ค์ด๋ ํ์๊ณผ ๊ฐ์ ์ฌ์ฉ์ ๊ฑด๊ฐ ์ ๋ณด ๊ธฐ๋ก ๋ฐ BMR, BMI ๋ฑ์ ์์น์ ํผ๋๋ฐฑ ์ ๊ณต์์ฌ ๊ด๋ฆฌ ๊ธฐ๋ฅ
: ๋ ์ง๋ณ๋ก ์์ฌ ๊ธฐ๋ก ๊ด๋ฆฌ- ์ด๋ฏธ์ง ์ธ์ ๊ธฐ์ ๋ก ์ ๋ก๋ํ ์ฌ์ง์ผ๋ก ์์์ ์ถ๋ก ํด๋ด์ด ์ฌ์ฉ์ ํธ์์ฑ ์ฆ๋
์ด๋ ๊ด๋ฆฌ ๊ธฐ๋ฅ
: ๋ ์ง๋ณ๋ก ์ด๋ ๊ธฐ๋ก ๊ด๋ฆฌ- ๋์ ์ธ์ ๊ธฐ์ ๋ก ์นด๋ฉ๋ผ๋ฅผ ํตํด ์ค์๊ฐ์ผ๋ก ์ฌ์ฉ์์ ์ด๋ ๋์์ ์ธ์ํ์ฌ ์ฌ์ฉ์ ํธ์์ฑ ์ฆ๋
- ๊ทธ ์ธ์
๊ทธ๋ํ ํต๊ณ
์์์ ๋ก๊ทธ์ธ
๋ฑ์ ์ธ๋ถ ๊ธฐ๋ฅ ์ ๊ณต
๐ ์งํ ๊ธฐ๊ฐ
- 2019๋ 9์ ~ 2020๋ 5์
๐โโ๏ธ ์ํ ์ญํ
- ๋ฐฑ์๋ ์๋ฒ ๊ฐ๋ฐ
- ์น ํ๋ก ํธ์๋ ๊ฐ๋ฐ
๐ ๏ธ ์ฌ์ฉ ๊ธฐ์
- Node.js express
- JavaScript
- MongoDB
- JWT, OAuth2
- Vue.js
- Bootstrap
- AWS (EC2, S3, CodeDeploy)
- Docker์ Nginx๋ฅผ ํตํ ๋ฌด์ค๋จ ๋ฐฐํฌ ํ๊ฒฝ ๊ตฌํ
๐ ๋ฆฌํฌ์งํฐ๋ฆฌ
- https://github.com/elsiff/smart-healthcare-backend
- https://github.com/elsiff/smart-healthcare-frontend
๐ Study
Spring
- bistroad ํ ํ๋ก์ ํธ ์งํ์ ํตํด Spring ํ๋ ์์ํฌ ์ค์ต
- ํ๋กํ ํ์ ๊ฐ๋ฐ์ ํตํด Spring Data JPA ์ค์ต
- ์ํคํ ์ณ ๋ณ๊ฒฝ ์ดํ Spring Data MongoDB ์ค์ต
- my-todo ํ ์ด ํ๋ก์ ํธ๋ฅผ ํตํด WebFlux ๊ธฐ์ ์ค์ต
- ๊ฐ์ธ์ ์ธ Spring ์ ๋ฆฌ๋ฅผ ํตํด Spring ๊ตฌ์กฐ ํ์ ๋ฐ ๊ธฐ์ด ์ง์ ์ต๋
Java & Kotlin
- more-fish ๊ฐ์ธ ํ๋ก์ ํธ ์งํ์ ํตํด Java์ Kotlin ์ค์ต
- ๊ธฐ์ด์ ์ธ Java ์ญ๋ ๊ฐ๋ฐ
- Singleton, Builder ๋ฑ ๋์์ธ ํจํด ์ค์ต
- Java์์ Kotlin์ผ๋ก์ ๋ง์ด๊ทธ๋ ์ด์ ์ค์ต
- Immutable, Null Safety, Data class, Extensions ๋ฑ Kotlin์ ์ฃผ์ ๊ธฐ๋ฅ ์ค์ต
- rebooted ๊ฐ์ธ ํ๋ก์ ํธ ์งํ์ ํตํด Kotlin ์ค์ต
- Gradle์ ์๋ธ๋ชจ๋ ๊ธฐ๋ฅ๊ณผ ์ธ์ด์ ์์ ๊ธฐ๋ฅ์ผ๋ก ๊ณ์ธตํ ๊ตฌ์กฐ ์ค์ต
- Scoping Functions, Generics & Variance, Reified Type, DSL Builder, Coroutine ๋ฑ Kotlin์ ๊ณ ๊ธ ๊ธฐ์ ์ค์ต
- Factory Method, Strategy, Observer ๋ฑ ๋์์ธ ํจํด ์ค์ต
- bistroad ํ ํ๋ก์ ํธ ์งํ์ ํตํด Spring ํ๋ ์์ํฌ์ Kotlin์ ํจ๊ป ํ์ฉํด๋ณด๋ ์ค์ต ์งํ
- ๊ฐ์ธ์ ์ธ Java & Kotlin ์ ๋ฆฌ๋ฅผ ํตํด ๊ธฐ์ด ์ง์ ๋ณต์ต ๋ฐ ์ดํด
- ๊ฐ์ธ์ ์ธ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ ๋ฆฌ๋ฅผ ํตํด ๊ธฐ์ด ์ง์ ๋ณต์ต ๋ฐ ์ดํด
Network & Web
- ๊ต๋ด '์ปดํจํฐ ๋คํธ์ํฌ' ๊ฐ์๋ก ๊ธฐ์ด ์ง์ ๊ณต๋ถ
TIME_WAIT/CLOSE_WAIT
์ ๋ฐ์์ํค๋ Socket ํ๋ก๊ทธ๋๋ฐ ์ค์ต์ ํตํด TCP ํธ๋์ ฐ์ดํน ๊ตฌ์กฐ ํ์ ๋ฐTIME_WAIT
๊ณผCLOSE_WAIT
์ ๋ฐ์ ์์ธ์ ๋ํด ํ์ต- Wireshark๋ฅผ ํตํ Packet Sniffing ์ค์ต์ ํตํด ํจํท ์ํธํ์ ๋ํ ์ค์์ฑ ํ์ต
- ๊ต๋ด '๋ฐ์ดํฐ๋ฒ ์ด์ค' ๊ฐ์๋ก Servlet๊ณผ JSP์ ๋ํ ๊ธฐ์ด ์ง์ ๊ณต๋ถ
- ๊ต๋ด ์ข ํฉ์ ๋ณด์๋น์ค ๋ชจ๋ฐฉ ํ๋ก์ ํธ๋ฅผ ํตํด JSP๋ก ๊ฒ์ํ ๊ตฌํ๊ณผ ์ด๋ฉ์ผ/SMS ์ ์ก ๊ธฐ๋ฅ ๊ฐ๋ฐ ์ค์ต
- ๊ฐ์ธ์ ์ธ ๋คํธ์ํฌ & ์น ์ ๋ฆฌ๋ฅผ ํตํด ๊ธฐ์ด ์ง์ ๋ณต์ต ๋ฐ ์ดํด
- ๊ฐ์ธ์ ์ธ ํด๋ผ์ฐ๋ ์ ๋ฆฌ๋ฅผ ํตํด ๊ด๋ จ ์ง์ ๋ณต์ต ๋ฐ ์ดํด
Operating System
- ๊ต๋ด '์ด์์ฒด์ ' ๊ฐ์๋ก ๊ธฐ์ด ์ง์ ๊ณต๋ถ
- ๊ฐ์ธ์ ์ธ ์ด์์ฒด์ ์ ๋ฆฌ๋ฅผ ํตํด ๊ธฐ์ด ์ง์ ๋ณต์ต ๋ฐ ์ดํด
Database
- ๊ต๋ด '๋ฐ์ดํฐ๋ฒ ์ด์ค' ๊ฐ์๋ก ๊ธฐ์ด ์ง์ ๊ณต๋ถ
- ๊ต๋ด ์ข ํฉ์ ๋ณด์๋น์ค ๋ชจ๋ฐฉ ํ๋ก์ ํธ๋ฅผ ํตํด ER ๋ค์ด์ด๊ทธ๋จ ์์ฑ๊ณผ ์คํค๋ง ์ ๊ทํ ์ค์ต
- ๊ฐ์ธ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ฆฌ๋ฅผ ํตํด ๊ธฐ์ด ์ง์ ๋ณต์ต ๋ฐ ์ดํด
Algorithm & Data Structure
- ๊ต๋ด '์๋ฃ๊ตฌ์กฐ' ๊ฐ์๋ก ๊ธฐ์ด ์ง์ ๊ณต๋ถ
- ์ฐ์ฐ์ ์ฐ์ ์์๊ฐ ์ฃผ์ด์ง ๊ณ์ฐ๊ธฐ ๊ตฌํ ๊ณผ์ ๋ฅผ ํตํด Stack์ ๋ํ ์ดํด์ ๊ณ์ฐ๊ธฐ ๊ตฌํ ์ ๋ต ์ต๋
- ๊ต๋ด '์๊ณ ๋ฆฌ์ฆ' ๊ฐ์๋ก ๊ธฐ์ด ์ง์ ๊ณต๋ถ
- 'The Swapping Puzzle' ๊ณผ์ ๋ฅผ ํตํด Backtracking ๋ฌธ์ ํ์ด์ ๋ํ ์ ๋ต ์ต๋
- ๋ฐฑ์ค, ํ๋ก๊ทธ๋๋จธ์ค ๋ฑ ์จ๋ผ์ธ ์๊ณ ๋ฆฌ์ฆ ํ์ด ์๋น์ค๋ฅผ ํตํด ์ฌ๋ฌ ์ ํ์ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ค์ ๋ํ ์ ๋ต ์ต๋
- ๊ฐ์ธ์ ์ธ ์๊ณ ๋ฆฌ์ฆ & ์๋ฃ๊ตฌ์กฐ ์ ๋ฆฌ๋ฅผ ํตํด ๊ธฐ์ด ์ง์ ๋ณต์ต ๋ฐ ์ดํด