
Contact
Email: [email protected]
Github: **https://github.com/dc-choi**
Blog: **https://dc-choi.tistory.com/**
LinkedIn: **https://www.linkedin.com/in/dc-choi/**
๐ ์๋
ํ์ธ์! ์น ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ต๋์ฒ ์
๋๋ค.
๊ธฐ์ ๋ก ํ๊ณผ ์๋น์ค๋ฅผ ํจ๊ป ์ฑ์ฅ์ํค๋ ๊ฒ์ ๋ชฉํ๋ก ์ผํด์์ด์.
TypeScript์ NestJS๋ฅผ ์ค์ฌ์ผ๋ก MySQL, AWS๋ฅผ ํ์ฉํด VMIยท๋ฌผ๋ฅยท๋ณด์ ๋ถ์ผ์ ๋๊ท๋ชจ ์๋น์ค๋ฅผ ์ค๊ณยท์ด์ํ๋ฉฐ, ๋น์ฆ๋์ค ์ฑ๊ณผ์ ๊ธฐ์ ์ ์์ฑ๋๋ฅผ ๋์์ ๋์ด๋ ๊ฒฝํ์ ์์์ต๋๋ค.
์ค๋ฌด์์๋ ์์ฒ ๋ IoT ๊ธฐ๊ธฐ์ ๋์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ฉฐ DB Lock์ผ๋ก ์ ํฉ์ฑ์ ๋ณด์ฅํ๊ณ , ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋ฐ์ฃผ ์๋ํ ์์คํ
์ ๊ตฌ์ถํด ์ธ๋ ฅ ์ค์ฌ ํ๋ก์ธ์ค๋ฅผ ์์ ์๋ํํ์ต๋๋ค. ๋ํ, Prisma ์ฟผ๋ฆฌ ๊ตฌ์กฐ ๊ฐ์ ์ผ๋ก API ์๋ต ์๋๋ฅผ 90% ํฅ์, Docker ์ด๋ฏธ์ง 43% ๊ฒฝ๋ํ, ๋ฐฐํฌ ์๋ 26% ๋จ์ถ ๋ฑ ๋์ ๋ณด์ด๋ ํผํฌ๋จผ์ค ์ต์ ํ๋ฅผ ์ฃผ๋ํ์ต๋๋ค
์๋น์ค ์ด์๋จ๊ณ์์๋ Grafana/Prometheus/Loki ๊ธฐ๋ฐ ๋ชจ๋ํฐ๋ง ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํด ์ฅ์ ํ์ง ๋ฐ ๋์ ์๋๋ฅผ ๋์๊ณ , CloudFront + ELB + ECS + RDS Read Replica๋ฅผ ๋์
ํด ํธ๋ํฝ ์ฆ๊ฐ์๋ ์์ ์ ์ธ ์ด์์ด ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ์ต๋๋ค.
๊ธฐ์ ์ ์ฑ์ฅ์ ๊ฒฐ๊ตญ ์ฌ๋์ ํตํด ์์ฑ๋๋ค๊ณ ๋ฏฟ์ต๋๋ค. ์นด์นด์คํ
ํฌ ์บ ํผ์ค ๋ฉํ ๋ก ์ฐธ์ฌํ๊ณ , ์ปค๋ฎค๋ํฐ์์ ์๋ฐฑ ๋ช
์์ ๋ฐํํ๋ฉด์ ๋ฐฐ์ด ๊ฒ์ ๋๋๊ณ ๋ ๋์ ๋ฌธํ๋ฅผ ๋ง๋๋ ๋ฐ์๋ ์ง์ฌ์ผ๋ก ์ฆ๊ฑฐ์์ ๋๋๋๋ค.
๐ ๏ธ Skills
ํ์ฌ ์
๋ฌด์ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ฉํ๋ ๊ธฐ์ ์
๋๋ค.
BackEnd
- Java, Node.js(TypeScript)
- Spring Boot, Spring MVC, Spring Data JPA, Spring Batch
- Express, NestJS, @nestjs/schedule, @nestjs/bullmq, @nestjs/axios
- JPA, Hibernate, Querydsl-Jpa, Prisma, Sequelize, Mongoose
- JUnit 5, Mocha, Chai, SuperTest, Jest
- SonarQube
DevOps
- MySQL, MariaDB, MongoDB, Redis
- Jenkins, GitHub Action
- AWS LightSail, EC2, ECS, ECR, RDS, S3, SQS, EventBridge
SNS, CloudWatch, Lambda, Route 53
- Docker
- Nginx
- Amazon Linux 2, Ubuntu
๐ผ Work Experience
2024.02 ~
ํ์ฌ
๋ฐฑ์๋ ๊ฐ๋ฐ์
Skils:
TypeScript, NestJS, Prisma, MySQL, Docker,
@nestjs/schedule, @nestjs/bullmq, @nestjs/axios
EC2, ECS, ECR, RDS, S3, SQS, EventBridge
SNS, CloudWatch, Lambda
NestJS ๊ธฐ๋ฐ VMI ์๋น์ค ํต์ฌ ๊ธฐ๋ฅ ์ค๊ณ ๋ฐ ๊ฐ๋ฐ
์ฌ๊ณ ๊ด๋ฆฌ ๋์์ฑ ๋ฌธ์ ํด๊ฒฐ ๋ฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋ฐ์ฃผ ์๋ํ ์์คํ
๊ตฌ์ถ
- DB Lock์ผ๋ก ์์ฒ ๋ IoT ํ๋์จ์ด ๋์ ์์ฒญ์ Race Condition์ ํด๊ฒฐํ๊ณ
๋ฐ์ดํฐ ์ ํฉ์ฑ ํ๋ณด
- ์กฐ์ง ๋ด Kafka ๋์
ํ๊ณ๋ฅผ ๊ณ ๋ คํ์ฌ
AWS EventBridge, SQS ๊ธฐ๋ฐ ์ด๋ฒคํธ ์ํคํ
์ฒ๋ก ๋ฐ์ฃผ ์๋ํ ์ค๊ณ
- ์๊ธฐ ์ฌ๊ณ ๊ด๋ฆฌ 4์๊ฐ์์ 10๋ถ์ผ๋ก ์ ๊ฐ(95.8% ํจ์จํ),
์๊ธฐ ๋ฐ์ฃผ 1์๊ฐ์์ ์์ ์๋ํ ๋ฌ์ฑ
PMF ๋ฌ์ฑ ํ ๋ํ ๊ณ ๊ฐ์ฌ PoC ์ฑ๊ณต์ ์ํ ๋ชจ๋ ์ค์ฌ ์ํคํ
์ฒ ์ค๊ณ
- ๋๋ฉ์ธ๋ณ ๋ชจ๋ ๋ถ๋ฆฌ ์ค๊ณ๋ก ์ฆ์ ์๊ตฌ์ฌํญ ๋ณ๊ฒฝ์ ์ ์ฐํ๊ฒ ์์ฉ
- ๋ํ ์ ์ฝ๋ฐ์ด์ค์ฌ, ์ฐ๋งค์ถ 280์ต F&B, ์ฐ๋งค์ถ 2000์ต ๊ธฐ๋ด์ ๊ธฐ์
PoC ์ฑ๊ณต
์ด์ ์ค ์ฑ๋ฅ ์ต์ ํ ๋ฐ ์์คํ
์์ ์ฑ ํ๋ณด
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ ๋ฐ ๋ฐฐํฌ ํจ์จ์ฑ ๊ฐ์
- ์๋น์ค ์ฑ์ฅ์ ๋ฐ๋ฅธ ์ธํ๋ผ ๊ตฌ์กฐ ๊ณ ๋ํ
- ์์ ์ ์ธ ์ค์ผ์ผ๋ง ๋ฐ ๋ฌด์ค๋จ ๋ฐฐํฌ ํ๊ฒฝ ํ๋ณด
- ํธ๋ํฝ ์ฆ๊ฐ์ ๋ฐ๋ผ ๋จ์ผ NGINX ์๋ฒ ๊ตฌ์กฐ๋ฅผ
CloudFront + ELB + ECS(Fargate) ๊ธฐ๋ฐ ์ํคํ
์ฒ๋ก ์ ํ
- RDS Read Replica ๋์
์ผ๋ก ์ฝ๊ธฐ ๋ถํ๋ฅผ ๋ถ์ฐํ๊ณ ์๋ต์๋ 40% ๊ฐ์
Grafana/Prometheus/Loki ๊ธฐ๋ฐ ๋ชจ๋ํฐ๋ง ๋ฐ ๋ก๊น
์ธํ๋ผ ๊ตฌ์ถ
- ๋ก๊ทธ ๋ฐ ๋ฉํธ๋ฆญ ์์ง ๋ฐ ๊ฒฝ๋ณด ์ ์ฑ
์ ๋ฆฝ์ผ๋ก
๋ณ๋ชฉ ๊ตฌ๊ฐ ์กฐ๊ธฐ ํ์ง ๋ฐ ์ฅ์ ๋์ ์๋ ํฅ์
- Grafana/Prometheus/Loki ๊ธฐ๋ฐ ๋ชจ๋ํฐ๋งยท๋ก๊น
์ธํ๋ผ ๊ตฌ์ถ์ผ๋ก
์๋น์ค ๊ด์ธก์ฑ ๊ฐํ
- Grafana Alerting ๊ธฐ๋ฐ ์ค์๊ฐ ์ฅ์ ์๋ฆผ ์์คํ
๊ตฌํ
2022.06 ~
2023.05
๋ฐฑ์๋ ๊ฐ๋ฐ์
Skils: TypeScript, Express.js, Sequelize, MySQL
Express.js ๊ธฐ๋ฐ ๊ตญ์ ๋ฐฐ์ก ์๋น์ค ๋ฐฑ์๋ ๊ฐ๋ฐ
- ์์ธ ๋ด์ฉ
- ๋ฒ์ญ ๊ธฐ๋ฅ, ํ์จ ์ ๋ณด ๋ฐฐ์น ์ฒ๋ฆฌ, ๋ฐฐ์ก ์ ๋ณด ์คํฌ๋ํ ๊ธฐ๋ฅ ๋ด๋น
- Google API๋ฅผ ์ฐ๋ํ ๋ฒ์ญ ๊ธฐ๋ฅ ๊ฐ์ ํ 70% ์ฑ๋ฅ ํฅ์
- Jenkins ๊ธฐ๋ฐ CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ์ผ๋ก ๋ฐฐํฌ ์๋ 50% ๋จ์ถ
Express.js ๊ธฐ๋ฐ FIDO ์๋ฒ ๊ฐ๋ฐ ์ฃผ๋ ๋ฐ ์คํ์์ค ๊ธฐ์ฌ
๊ณ ๊ฐ์ฌ ์๊ตฌ์ฌํญ์ ๋ฐ๋ฅธ ์์คํ
๋ง์ด๊ทธ๋ ์ด์
- ์์ธ ๋ด์ฉ
- ๊ณ ๊ฐ์ฌ On-Premise ํ๊ฒฝ ๊ตฌ์ถ์ ์ํด AWS ๊ธฐ๋ฐ ์๋น์ค ๋ง์ด๊ทธ๋ ์ด์
- ์์์ ๋ณด ๋ฐ์ดํฐ ์ ํํ๋ฅผ ์ํ MongoDB์์ MySQL๋ก ๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์