๐ง๐ปโ๐ป
Alex | ํ์
์ ์ํ๋ ๊ฐ๋ฐ์
9๋
์ฐจ, ํ๋ก์ ํธ ๊ฒฝํ์ด ๋ง๊ณ ํญ์ ์ฑ์ฅํ๋ ๊ฐ๋ฐ์ ํํ๊ท์
๋๋ค.
#BE #FE #Typescript #Go #Python #NestJS #NextJS #ExpressJS #Gin #Fiber #FastAPI #Django #Pandas #Torch #k8s #GCP #AWS #Azure
Main Skill ๐ฏ
- ํฌ์ค์ผ์ด, ๋ณดํ, ์ ์ฝ ๋๋ฉ์ธ์ ๋ํ ์ดํด
- SQL, Selenium, Nifi, Airflow, Pandas, Torch ๋ฑ์ ํ์ฉํ ๋ฐ์ดํฐ ์์ง/ETL/ML.
- ํด๋ผ์ฐ๋(GCP, AWS, Azure ๋ฑ) ํ๊ฒฝ๊ณผ On-prem ํ๊ฒฝ์์์ ์๋น์ค ๊ตฌ์ถ ๋ฐ ์ด์.
- FastAPI, ExpressJS ๋ฅผ ํ์ฉํ ML ๋ชจ๋ธ ์๋น.
- Fiber(Go) ๋๋ FastAPI, Celery, Redis๋ฅผ ํ์ฉํ ๋ถ์ฐ ์ฒ๋ฆฌ ์๋ฒ ๊ตฌ์ถ ๋ฐ ์ด์.
- Pandas, Torch๋ฅผ ํ์ฉํ ML ๋ชจ๋ธ ๊ฐ๋ฐ ๋ฐ ์๋น์ค ์ด์ ๊ฒฝํ.
- NextJS, NuxtJS ๋ฑ์ ํ์ฉํ ํ๋ก ํธ์๋ ๊ฐ๋ฐ.
- ReactNative, Flutter, Flet(Python)์ ํ์ฉํ ํฌ๋ก์คํ๋ซํผ ์ฑ ๊ฐ๋ฐ.
Introduce.
๋ค์ํ ํฌ์ง์
๊ณผ ๋ค์์ ํ๋ก์ ํธ ๊ฒฝํ
์คํํธ์
๊ฒฝํ์ด ๋ง๊ณ ๋ฐฑ์๋๋ฅผ ๋ฉ์ธ์ผ๋ก ํ๋ ํ์คํ ๊ฐ๋ฐ์์
๋๋ค.
์ด๊ธฐ ๊ธฐํ๋ถํฐ ์ฐธ์ฌํ์ฌ ๊ฐ๋ฐ, ๋ฐฐํฌ, ์ด์๊น์ง End-To-End๋ก ํ๋ก์ ํธ๋ฅผ ์ํํ ๊ฒฝํ์ด ์์ต๋๋ค. ๋ํ ํ์ ์ PM ์ญํ ๋ ๊ฒธํ์ต๋๋ค.
์คํํธ์
ํน์ฑ์ ๊ธฐ์ ์ ์ผ๋ก ๋ค์ํ ํฌ์ง์
์ ๊ฒฝํํ๊ณ , ํ์ ์ ํผ์ ํ๋ก์ ํธ๋ฅผ ์์ํด ์๋ฃํ ๊ฒฝํ๋ ์์ต๋๋ค.
๊ทธ๋์ ํฌ์ง์
๋ค๋ง๋ค์ ๊ณ ์ถฉ๊ณผ ๊ฐ๋ฐ ํ์์ฌํญ๋ค์ ๋ํด ์ดํดํ๊ณ ์์ต๋๋ค.
ํ์
์์ ์ฌ๋ฌ ํฌ์ง์
์ ๋๋ฃ๋ค์๊ฒ ์๋ ค์ผ ํ ์ง์ ์ ์๊ณ ํจ์จ์ ์ธ ์
๋ฌด ์ํ์ ์ํด ๋ฅ๋์ ์ผ๋ก ๋
ธ๋ ฅํฉ๋๋ค.
๋ํ ํ๋ก์ ํธ ์ ๊ณผ์ ์ ์ง์ ๊ด๋ฆฌํ๊ณ ๊ฐ๋ฐํด ๋ดค๊ธฐ ๋๋ฌธ์, ํ๋ก์ ํธ ์ํ์ ํจ์จ์ ์ผ๋ก ํ๋ ํธ์
๋๋ค.
์
๋ฌด ์๋ํ๋ฅผ ํตํ ๋ฆฌ์์ค ์ ์ฝ
๋ฐ๋ณต์ ์ธ ์ผ์ ์๋ํํ๊ณ ๋นํจ์จ์ ์ธ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ ํ๋ ๊ฒ์ ์ข์ํฉ๋๋ค.
๋ฐ์ดํฐ ์ฐ๊ตฌํ์ ๋ฐ๋ณต์ ์ธ ๋ฐ์ดํฐ ์์ง, ๊ฒ์ฆ ์
๋ฌด๋ฅผ ์นํฌ๋กค๋ง, RPA ๋ฑ์ ๊ธฐ์ ์ ํ์ฉํ์ฌ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๊ณ ,
2๋ช
์ด 2์ฃผ ์ ๋ ์์ ๋๋ ์์ง/๊ฒ์ฆ ์
๋ฌด๋ฅผ ๋ฐ ์๋ํํ์ฌ 2์ผ๋ก ์ค์ฌ ์
๋ฌด๋ฅผ 85% ๊ฐ๋ ์ ๊ฐ์ํจ ๊ฒฝํ์ด ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๋์ผ๋ก ์์งํ๋ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์์งํ๋ ์ฑ์ ๊ฐ๋ฐํด ๋งค๋
๋ฐ์ํ๋ ๋ฐ์ดํฐ ์์ง ํ๋ฆฌ๋์ ๋น์ฉ์ ์ ์ฝ ํ์ต๋๋ค.
์ด๋ฅผ ํตํด ์ด์ ๋ณด๋ค ์๋ฌ๊ฐ ์ค์ด ์ ๋ณด๋ค ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ ํ๋ ์๊ณ ๋น ๋ฅด๊ฒ ์์งํ ์ ์๊ฒ ๋์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด ์ธํ๋ผ์ ์ฝ๋๋ฅผ ๊ฒํ ํด ๋ถํ์ํ ๊ตฌ์ฑ๊ณผ ํ๋ก์ธ์ค๋ฅผ ์ ๊ฑฐํ๊ณ ๊ฐ์ ํ์ฌ ๋งค์ ์๊ธ์ 35.5% ์ ์ฝํ ๊ฒฝํ๋ ์์ต๋๋ค.
1์ธ ๊ฐ๋ฐ๊ณผ ๋ฆฌ๋ ๊ฒฝํ
์ค์ค๋ก ๋ฐฐ์ฐ๊ณ ์ฑ์ฅํ๋ ๊ฒ์ ์ต์ํฉ๋๋ค. ์ด์ ์ ๋ค๋ ํ์ฌ๋ค์ ์
์ฌ ํ ๊ธฐ์กด ๊ฐ๋ฐ์๋ค ๋ชจ๋ ์์ ๋ ํด์ฌ๋ฅผ ํ ์ผ์ด ๋ง์์ต๋๋ค.
์ด๋ก ์ธํด ์ธ์์ธ๊ณ ์์ด ํผ์ ์์ํ๊ฒ ๋๋๋ฐ, ์ด๊ฒ์ด ์ ์
๋๋ถํฐ ์ฑ
์๊ฐ์ ๊ฐ๊ณ ๋ฅ๋์ ์ผ๋ก ์ผ ํ๋ ๊ณ๊ธฐ๊ฐ ๋์ต๋๋ค.
์์๋ถํฐ ํผ์ ์ฌ๋ฌ ์๋น์ค๋ฅผ ์ด์ํ๊ณ , ์ฒ์ ๋ณด๋ ์ธ์ด, ํ๋ ์์ํฌ๋ฅผ ๊ณต๋ถํ๋ฉฐ ๋น ๋ฅด๊ฒ ๋ฐฐ์ ๋๊ฐ์ต๋๋ค.
์ฌ๋ด ์ ์ผํ ๊ฐ๋ฐ์๋ก ์์ํด ๊ธฐ์กด ์๋น์ค ์ด์๊ณผ ๋ฒ๊ทธ ์์ ๋ฐ ์๋น์ค ๊ฐ์ , ์ ๊ท ์๋น์ค ๋ฐ์นญ, ๊ธฐ์กด ๊ธฐ๋ฅ ๊ณ ๋ํ๊น์ง ์ํํ์ต๋๋ค.
์ดํ ์๋ฆฌ์ฆ A์์ 200์ต์ด ๋๋ ์๋ฆฌ์ฆ C ํฌ์ ์ ์น๊น์ง, ๊ทธ๋ฆฌ๊ณ 15๋ช
๊ท๋ชจ์ ๊ฐ๋ฐํ์ผ๋ก ์ฑ์ฅํ ๋๊น์ง ๊ธฐ์ ์ ์๋ฌด๋ค์ ์ํ ๋ฐ ๋ฆฌ๋ํ ๊ฒฝํ์ด ์์ต๋๋ค.
์ฝ๋์ ์ธํ๋ผ ๊ฐ์ ์ ํตํ ์ฑ๋ฅ ์ต์ ํ
์ด์ ์ค์ธ ์๋น์ค์ ์๋ก์ด ๋ก์ง, ๊ธฐ์ , ์๋ฃจ์
๋ค์ ์ ์ฉํด ์ฑ๋ฅ ํฅ์์ ๊ฐ๋ฐ ์์
์ ๊ฐ์ํํฉ๋๋ค.
๋ง์ ์๋ฃจ์
๋ค์ ๊ณต๋ถํด ๋น๊ตํ๊ณ ํ
์คํธ๋ฐ ๋ฒค์น๋งํฌ๋ฅผ ์งํํด, ๋์ ์ธํ๋ผ์ ์ฝ๋๋ก ๊ฐ์ ํด ์์ต๋๋ค.
๊ธฐ์กด ์ฝ๋๋ค๋ ์ฃผ๊ธฐ์ ์ธ ๋ฆฌํํ ๋ง์ ํตํด ๊ธฐ๋ฅ ๋จ์๋ก ์ฌ๊ตฌ์ฑํ์ฌ ๋ณต์กํ๊ฒ ์ฝํ ์๋ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํ ํ์ต๋๋ค.
์ด๋ฐ ์ต๊ด ๋์ ์ด๋ฏธ ๋ฆฌํํ ๋ง์ ํตํด ๊ธฐ๋ฅ ๋จ์๋ก ๋ถ๋ฆฌ๋ ๊ธฐ์กด ์๋ฃจ์
์ API ๋น ์๊ธ์ ๋ถ๊ณผํ๋ API ๋น์ง๋์ค ์๊ตฌ์ฌํญ๊ณผ
์ฐ๊ฒฐ๋๋ฉด์ ๋น ๋ฅด๊ฒ API Service๋ฅผ ๋ฐ์นญํด ํ์ฌ ๋งค์ถ์ ๊ธฐ์ฌํ ์ ์์์ต๋๋ค.
์ถ๊ฐ์ ์ผ๋ก ์ฝ๋ ๋ด์ ๋ถํ์ํ ํ๋ก์ธ์ค๋ฅผ ์ค์ด๊ณ ๋ก์ง์ ๊ฐ์ ํด ๊ธฐ์กด ์ฑ๋ฅ ๋๋น 40๋ฐฐ ์ ๋ ๊ฐ์ ๋๊ณ , ์ธํ๋ผ ๊ตฌ์ฑ๋ ๊ธฐ๋ฅ ๋จ์๋ก
๋ถ๋ฆฌํด ์๊ธ์ ์ ๊ฐํ ์ ์์์ต๋๋ค.
ํ์ฌ ํ์ฌ์์์ ๊ฒฝํ
ํ ํ์ฌ์์๋, ์
์ฌ ํ ์ผ๋ง ์ง๋์ง ์์ ๊ธฐ์กด ๊ฐ๋ฐ์๋ค์ด ๋ชจ๋ ํด์ฌํ๊ณ ํผ์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ ์๊ฐํ ์น ์๋น์ค๋ฅผ ๊ฐ๋ฐ ๋ฐ ์ ์ง๋ณด์ํ๊ฒ ๋์์ต๋๋ค.
๋ํ ๊ธ๋ก๋ฒ ๊ธฐ์ค์ ๊ท์ ๊ณผ ๋ณด์์ ์ ์ฉํ๊ณ , ์ถฉ์กฑํ๊ธฐ ์ํด ๊ธ๋ก๋ฒ ๋๋ฃ๋ค๊ณผ ๊ธฐ์ ์ ์ํต์ ์ด์ด๊ฐ๊ณ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ ์๊ฐํ ์๋น์ค๊ฐ ๋ฉ์ธ์ด๊ธฐ ๋๋ฌธ์ ์ด์ ๋ณด๋ค ๋ง์ ๋ฐ์ดํฐ ์์ง๋์ด๋ง ์
๋ฌด๋ฅผ ํ์คํ ์
๋ฌด์ ๊ฒธํ์ฌ ์ํํ๊ณ ์์ต๋๋ค.
์
๋ฌด ์ธ์ ์ผ๋ก Kubernetes๊ณผ ML, ์น, ์ฑ ๊ฐ๋ฐ ๊ด๋ จ ์ฌ์ด๋ ํ๋ก์ ํธ๋ค์ ์ง์์ ์ผ๋ก ๋ณํํ๋ฉฐ ์ฑ์ฅํ๊ณ ์์ต๋๋ค.
Main Project Experience.
๋ถ์ฐ ์ค์ผ์ค๋ฌ๋ฅผ ํตํ ๋ฐ์ดํฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ฐ ์๋น์ค ์๋ฒ ๊ฐ๋ฐ
2024.07~2024.10
ํ์คํ ๊ฐ๋ฐ
#Go #Fiber #Asynq #Redis #NextJS #Postgres #Scala #Playframework #AKKA #AngularJS #CoffeeScript #MySQL #NuxtJS
์๊ฐ
์์ฝํ์ ์ข
๋ฅ๋ ์์ฃผ ๋ง๊ณ , ๊ด๋ จ ํนํ์ ์์ก์ ํ์ฌ๋ ๊ณ์ ์งํ์ค์
๋๋ค. ํนํ์ ํ๊ฐ, ๊ทธ๋ฆฌ๊ณ ์์ก ๋ฑ์ ๊ณผ์ ๋ค์ ํ๋์ ๋ณผ ์ ์๋ ํนํ ์์ก ๋ชจ๋ํฐ๋ง ์๋น์ค์
๋๋ค.
๊ฐ๋ฐ ์ด์
Scala, Playframework๋ก ๊ฐ๋ฐํ ๊ฐ๋ฐ์๋ค์ ๋ชจ๋ ํด์ฌํ๊ณ , ์ต์์น ์์ ์ธ์ด์ด๊ธฐ์ ์์ฒญ์ ๋ฐ๋ผ ๊ฐ๋จํ ์์ ๋ง ํ๊ณ ์์์ต๋๋ค. 2023๋
์ค์ ์ฏค ๋ณด์ํ์์ EOL์ด ์ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์
๊ทธ๋ ์ด๋๋ฅผ ์ง์ ๋ฐ์์ต๋๋ค. ํ์ง๋ง ๋ค๋ฅธ ๊ธด๊ธ ์ด์๋ค์ด ๋ง์ ์ฐ์ ์์๊ฐ ๋ฐ๋ฆฌ๊ณ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค์ํ ์๋ํํฐ API๊ฐ ๋ฉ์ด์ ์
๋ฐ์ดํธ ๋๋ฉด์ ํฐ ๊ท๋ชจ์ ์ฝ๋ ์
๋ฐ์ดํธ๊ฐ ๋ถ๊ฐํผํด์ง๋ฉฐ ๊ฐ๋ฐ์ด ์์๋์ต๋๋ค. ๊ฐ๋ฐ ๊ฒํ
๋งค์ผ ์ค์ผ์ค๋ ์๊ฐ๋์ ๋๋์ API๋ฅผ ์์ฒญํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ์ฌ ์์งํ๊ณ ์์๋๋ฐ, ์ด๋ฅผ ์ํํ ๋ AKKA ๋ฅผ ์ด์ฉํด ๋น๋๊ธฐ ๋ถ์ฐ ์ฒ๋ฆฌ๋ฅผ ํ์ต๋๋ค. 3๊ฐ์ง ์ด์๋ฅผ ํด๊ฒฐํด์ผ ํ์ต๋๋ค. ์ฒซ์งธ๋ ์๋ํํฐ API ๋ฉ์ด์ ์
๋ฐ์ดํธ, ๋์งธ๋ ์ ์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์
๋ฐ์ดํธ, ์
์งธ๋ ์ ๋ฃ AKKA ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์ฒดํ๋ ๊ฒ์ด์์ต๋๋ค. Scala-Playframework์์ ์ฒซ์งธ, ๋์งธ, ์
์งธ๋ฅผ ์๋ํด ๋ดค์ง๋ง, ์์ ๊ธฐ๋ฅ์ ์์ ํด ๊ฐ๋ ๊ฒ๋, ๋ผ์ด๋ธ๋ฌ๋ฆฌ 1๊ฐ๋ฅผ ์ต์ ํํ๋ ๊ฒ๋ ์ค๋ ๊ฑธ๋ฆฌ๋ ์ํฉ์ด์์ต๋๋ค. ์ฐจ๋ผ๋ฆฌ ๋ก์ง์ ์ ๋ฆฌํด ์๋ก ๋ง๋๋ ๊ฒ์ผ๋ก ๊ฒฐ๋ก ์ ๋์ต๋๋ค. ๊ทธ๋์ ์ฐ์ md ํ์ผ์ ์ด์ด ์๋น์ค ๊ตฌํ์ ํ์ํ ๋ด๋ถ ๋ก์ง, UI, API๋ฅผ ๋ฌธ์๋ก ์ ๋ฆฌํ์ต๋๋ค. ๊ฐ๋ฐ ๊ณํ
์ฌ์ ์์ฑํ ๋ฌธ์๋ ๊ธฐํ์ ์ฒ๋ผ ์ด์ดํด์ก๊ณ , ์ค์ ๊ฐ๋ฐ์ ์ด๋ฏธ ํ ๊ฒ์ฒ๋ผ ํด์ผ ํ ์ผ์ด ๋จธ๋ฆฌ์ ๊ทธ๋ ค์ก์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ํตํด ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ ๋ด๋ถ์ ์ธ ์ค์ผ์ค๋ฌ์ ํจ๊ป ๋์ํ๋ ๋น๋๊ธฐ ๋ถ์ฐ ์ฒ๋ฆฌ ๋ผ๋ ๊ฒ์ ์์์ต๋๋ค. ๊ทธ๋์ ๋น๋๊ธฐ ๋ถ์ฐ ์ฒ๋ฆฌ์ ์ข์ ์๋ฒ ์กฐํฉ์ ๋น๊ตํด ๋ดค์ต๋๋ค. ์กฐํฉ๋ค์ ๊ฐ๋จํ ๊ตฌ์ฑํด ๋ฒค์น๋งํฌ๋ฅผ ๋๋ ค๋ณด๋ฉด ์ข๊ฒ ์ง๋ง ์ฌ์ ๊ฐ ์์ด, ๊ฒ์์ ํตํด ๋์์ฑ ์ฒ๋ฆฌ๊ฐ ์ฝ๊ณ ์ฑ๋ฅ์ด ์ข์ผ๋ฉด์ ์ฝ๋ ๊ฐ๋
์ฑ๋ ์ข์ Go๋ฅผ ์ ํํ์ต๋๋ค. Go๋ก ๋ง๋ค๊ฒ ๋ ์กฐํฉ์ผ๋ก Fiber, Asynq๋ฅผ ์ ํ ํ์ต๋๋ค. Asynq๋ AsynqMon๊ณผ ์ธํธ๋ก ์์ด Task ์ํ ํํฉ์ ์ฝ๊ฒ ํ์
ํ๊ณ ์กฐ์ํ ์ ์์ด์ ์ข์์ต๋๋ค. ์ด์ ๊ฐ๋ฐ์ ํ์ํ ์์
์ Infra๋ฅผ ๊ตฌ์ฑ, DB ๋ง์ด๊ทธ๋ ์ด์
์๋ํ ์คํฌ๋ฆฝํธ, ์ค์ผ์ค ํ์คํฌ ๋์, ๊ด๋ฆฌ์ API/UI ๊ฐ๋ฐ์ด์์ต๋๋ค. Docker ํ๊ฒฝ ๊ตฌ์ฑ
๋น ๋ฅธ ํ๊ฒฝ ๊ตฌ์ฑ๊ณผ ํ ๋ด ํธ๋ฆฌํ ๊ณต์ ๋ฅผ ์ํด ๋ก์ปฌ๊ณผ ๋ฐฐํฌ ํ๊ฒฝ์ Docker ์ค์ ํ์ผ์ ์ ์ํ์ต๋๋ค. Postgres, Redis, Asynqmon, Fiber(App)์ ๋ํด ์ ์ํ๊ณ , ๊ณต์ ๋ฌธ์์ ์ ์๋ค์ด ์์ด ์ด๋ฅผ ์ฐธ๊ณ ํด ์์ํ๊ฒ ๊ตฌ์ฑํ์ต๋๋ค.
DB ๋ง์ด๊ทธ๋ ์ด์
์คํฌ๋ฆฝํธ ๊ฐ๋ฐ
๋ก์ปฌ๊ณผ ๋ฐฐํฌ ํ๊ฒฝ์์ ๋ฐ์ดํฐ์ ํ๋ก์์ ธ ๋ฑ์ ์ฐธ์กฐํ๋ฉฐ ํ๋ก์ธ์ค๊ฐ ์งํ๋๊ธฐ์, ํ์ํ DB ์ ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ ์ฉํ๋ ์คํฌ๋ฆฝํธ ์์ฑ์ ํ์์์ต๋๋ค. ์ฐ์ ์ด์ DB์ ํ
์ด๋ธ, ๋ทฐ, ํ๋ก์์ ๋ฅผ ํ์ํด, ๊ผญ ํ์ํ ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ณํ๋ ์์
์ ์งํํ์ต๋๋ค. ์ด ๊ณผ์ ์์ ๊ทธ ๋์ ๋ฐฉ์น๋๋ ๋ถํ์ํ ๋ฐ์ดํฐ ํ๋ค๊ณผ ์ ์๋ค์ ๋์ด๋ผ ์ ์์์ต๋๋ค. ์ ๋ณ๋ ๋ด์ฉ์ ํ ๋๋ก ์ด์ DB์์ ๋ก์ปฌ ์ปจํ
์ด๋ DB๋ก ์์ ๋จ์์ ํ
์ด๋ธ ๋ฐ์ดํฐ๋ฅผ ๋ง์ด๊ทธ๋ ์ด์
์ ํ
์คํธํ๊ณ , ๋ก๊ทธ๋ฅผ ํ์ธํ๋ฉฐ ๋์์ ํ์ธํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค ์ ์๋ค์ 3๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ๋๋ด์ต๋๋ค. ์ ์ฒด ํ์ ์ฎ๊ธธ ๋ฐ์ดํฐ ๊ทธ๋ฃน, ํน์ ์๊ฐ๋๋ง ๊ฐ์ ธ์ฌ ๊ทธ๋ฃน, ์ปค์คํ
์ฟผ๋ฆฌ๊ฐ ํ์ํ ๊ทธ๋ฃน์ผ๋ก ๋๋์ด ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ์ต๋๋ค. ๊ทธ๋ ๊ฒ ์ค์๊ฐ์ผ๋ก ๋ก๊ทธ๋ฅผ ํ์ธํ๋ฉฐ, ์ด์ DB๋ฅผ ์์ ํ๊ฒ ๋ง์ด๊ทธ๋ ์ด์
ํ ์ ์์์ต๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค ๊ฐ๋ฐ
๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ์ด ๋๋๊ณ , ๋ก์ปฌ DB๋ก ์ ์ํด GORM ์์ ์ ๊ณตํ๋ Gen ํด์ ํ์ฉํด DB ๊ตฌ์ฑ์ Go์์ ์ฌ์ฉํ struct๋ก ์๋ ์์ฑํ์ต๋๋ค. ํ์ง๋ง GORM ํด์์ ์์ ํ ๋ชจ๋ ๊ตฌ์ฑ์ ๊ฐ์ ธ์ค์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ Cascade ์ค์ ๊ณผ Json ์ฒ๋ฆฌ ๋ฑ๊ณผ ๊ฐ์ด ์ปค์คํ
์ด ํ์ํฉ๋๋ค. ๋จผ์ ํ์ํ ์๋ํํฐ API ์์ฒญ์ ๊ฐ๋ฐํ๊ณ ๋ฐ์ดํฐ ํ์ธ๊ณผ ํ
์คํธ๋ฅผ ์ํด Swagger ์ค์ ํ ๋ค, ํ
์คํธ๋ฅผ ์งํํ์ต๋๋ค. ์๋ํํฐ API์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝ ์ ๊ณผ ํ๋ก ๋น๊ตํด ๊ฐ์ ๋งตํํ์ต๋๋ค. ์๋ํํฐ API ๊ฐ๋ฐ์ ๋๋ด๊ณ , Asynq๋ฅผ ํ์ฉํด Task์์ ์ฌ์ฉํ Client, Inspector, Scheduler, Server(Worker)๋ฅผ ๊ตฌ์ฑ ํ์ต๋๋ค. API ์์ฒญ๊ณผ DB ๋ฐ์ดํฐ์ ์ฐ๋๋ ๊ฐ๊ณต ์์
์ Task๋ก ๋๋์ด ์ ์ํ๊ณ , ์ฃผ๊ธฐ์ ์ผ๋ก ์คํ๋ Task์ ์์ Task๋ค์ ์ค์ผ์ค๋ฌ์ ๋ฑ๋กํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค ์ ์ฒด ๋์์ ์ฒ๋ฆฌ ๊ณผ์ ์ ํ
์คํธ ํ์ต๋๋ค. Worker๋ฅผ 12๊ฐ~24๊ฐ๊น์ง ๋๋ฆฌ๋ฉฐ ๋ฆฌ์์ค ์ฌ์ฉ๊ณผ ์ํ ์๋๋ฅผ ๋น๊ต ํ๊ณ 24๊ฐ๊ฐ ์ ์ ํ์ฌ ์ ์ ํ์ต๋๋ค. ์ค ๋์ ๊ฐ๋ฐ์ ์๋ฃํ๊ณ , ์ํํ Task๊ฐ ์์ ๋๋ 24๊ฐ์ Worker๊ฐ Task๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ผ ์๊ฐํ์ต๋๋ค. ๊ทธ๋์ ์์ฒญ์ด ์ ์ ๋๋ 2๊ฐ์ Worker๊ฐ Task๋ฅผ ์ํํ๊ณ , Inspector๋ก ํ์ธํด Pending Task๊ฐ 20๊ฐ ์ด์์ด๋ฉด 24๊ฐ๋ก Scalingํ๊ณ 20๊ฐ ๋ฏธ๋ง์ผ๋ก ๋ด๋ ค์ค๋ฉด ๋ค์ 2๊ฐ๋ก ์ค์ด๋ Auto Scaling์ ๊ตฌํํ์ต๋๋ค. ์ด ์์
์ ์ํํ๋ฉด์ AsynqMon์์ ์ ๊ณตํ๋ ๋์๋ณด๋๋ฅผ ์์ฃผ ํ์ธํ๋ฉฐ ์๋ฌ ์ฒดํฌ๋ ํ๊ณ Task ๊ด๋ฆฌ๋ ํ๋๋ฐ, ๊ต์ฅํ ์ ์ฉํด์ ๋ฐฐํฌ ํ๊ฒฝ์๋ ์ถ๊ฐํ๊ฒ ๋์ต๋๋ค. ๊ด๋ฆฌ์ ์น API/UI ๊ฐ๋ฐ
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์๋น์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ด๋ฆฌ์ ์น ์ฑ ๊ฐ๋ฐ์ ์์ํ์ต๋๋ค. ์ฌ์ ์ ์กฐ์ฌํ UI ํ์ ํญ๋ชฉ์๋ Table, DatePicker, Breadcrumb, ... ๋ฑ์ด ์์๋๋ฐ, NextJS, TailwindCSS, NextUI, Flowbite๋ฅผ ์ด์ฉํ๋ฉด ๋ชจ๋ ๋ง์กฑํ ์ ์์ด ๊ทธ๋ ๊ฒ ๊ฐ๋ฐ์ ์์ํ์ต๋๋ค. ๊ธฐ์กด DB ๊ตฌ์ฑ์ ๊ฑฐ์ ์ ์งํ๊ธฐ ๋๋ฌธ์, ๊ธฐ์กด ์ฝ๋์์ ์ฌ์ฉํ๋ UI ์ฝ๋์์ ์ด์ฉํ๋ ๋ฐ์ดํฐ ํ๋ ์ด๋ฆ์ ์ฐธ๊ณ ํด ๊ฐ๋ฐํ์ต๋๋ค. ๋๋ถ์ API ๊ฐ๋ฐ ์ ๋ฐ์ดํฐ ํ๋ ์ด๋ฆ์ ๋ํ ํผ์ ์ด ์ค์๊ณ , ํต์ ์ RestAPI - Json ํํ๋ก ์ฃผ๊ณ ๋ฐ์ NextJS์์ ๋น ๋ฅด๊ฒ ์ ์ฉํ ์ ์์์ต๋๋ค. NextUI์์ Dark, Light ํ
๋ง ์ ์ฉํ๋๋ฐ, ๊ธฐ๋ณธ ์ ์ค์ ์ธ Primary, Secondary, Success๋ฑ์ ์ค์ ์ ๋ฐ๋ฅด๋ฉด ์๋์ผ๋ก ํ
๋ง ๋ณ๊ฒฝ ์ ์ ์ ์ฉ์ด ๋์ง๋ง, ์ปค์คํ
์ปฌ๋ฌ๋ ๋ณ๊ฒฝ ์ dark๋ ๊ฐ์ด ์ค์ ํด์ค์ผ ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํผ์จ๋ฅผ ์ฃผ๋ก ์ด์ฉํ ์ง๋ง ๋ชจ๋ฐ์ผ์์๋ ๋ณผ ์ ์์ด์, ๋ชจ๋ฐ์ผ ๋จผ์ UI๋ฅผ ๊ฐ๋ฐ ํ, ํผ์จ ํ๋ฉด ํฌ๊ธฐ์ผ ๋์ UI ์ค์ ํ๋ ์์ผ๋ก ๊ฐ๋ฐํ์ต๋๋ค. ๊ฐ๋ฐ ํ๊ณ ๋ฐ ์ํ
๊ฐ๋ฐ ์ ๋ฐฑ์๋ ์๋ฒ์ ์ค์ ์ ๋์๊ณ , API ๊ฐ๋ฐ ์ด์ ์ ๋ถ์ฐ ์ฒ๋ฆฌ ๋ถ๋ถ ๊ฐ๋ฐ ๋ ๊ด๋ฆฌ์ ์น์ UI๋ฅผ ๋ณํํ์ฌ ๊ฐ๋ฐํด์ Global State ๊ด๋ฆฌ, ์ ์ฉํ Hook, StoryBook ๋ฑ์ ์ค์ ํ์ง ์๊ณ ์์ํ์ต๋๋ค. ์ถํ Recoil์ ํ์ฉํด State ๊ด๋ฆฌ๋ฅผ ํตํฉํ ์์ ์
๋๋ค. NextJS 14์์๋ Html์ meta ํ๊ทธ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ์ง ์๊ณ , Metadata์ ์ค์ ํ๋ ๊ฒ์ผ๋ก ๋ณ๊ฒฝ๋๋๋ฐ, ์ฌ์ ๊ฐ ์์ด ๋จ์ ๋ณ๊ฒฝ ์ ์ฉ์๋ง ์ง์คํ์ต๋๋ค. ์ถํ ๋ง์ผํ
๋ถ์์ ํ์ํด ๋ณ๊ฒฝํ ์์ ์
๋๋ค. ๋น์ฉ๊ณผ ์๊ฐ์ ์ฌ์ ๊ฐ ์์ด ์์ฌ์ด ์ ์ด ๋ง์ง๋ง, ๊ทธ๋๋ ์๋ก์ด ๊ฒ์ ๋ฐฐ์ฐ๊ณ ๊ฐ์ ์ ์ ์ ์ ์๋ ํ๋ก์ ํธ์์ต๋๋ค.
์์ฒด ๋ณดํ ์ฒญ๊ตฌ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ
2022.02~2022.05
PM, ํ์คํ ๊ฐ๋ฐ
#Go #ExpressJS #NextJS #NestJS
์๊ฐ
์ฑ์์ ๋ณดํ ๊ฐํธ ์ฒญ๊ตฌ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ด๋ฅผ ์ด์ฉํด ์ฒญ๊ตฌ์๋ฅผ ์์ฑํ๊ณ ๋ณดํ์ฌ๋ก ์ ๋ฌํ๋ ์๋ฃจ์
์
๋๋ค.
๊ฐ๋ฐ ์ด์
๊ธฐ์กด์๋ ์ฑ์ ํ์ฌ ์ API๋ฅผ ํ์ฉํด ๊ฐํธ ์ฒญ๊ตฌ๋ฅผ ํ๋๋ฐ, ๊ทธ ํ๋ก์ธ์ค๊ฐ ๊ฐ๋จํ์ต๋๋ค. ๊ณ ๊ฐ์ด ์ฑ์์ ์ฒญ๊ตฌ๋ฅผ ์ํด ํ
์คํธ ์
๋ ฅ๊ณผ ํ์ผ ์
๋ ฅ์ ํ๋ฉด ํ
์คํธ ์
๋ ฅ์ ๋ณดํ์ฌ ์ฒญ๊ตฌ์ ์์์ ํน์ ์์น์ ๋ฃ์ด์ฃผ๊ณ , ์ฒจ๋ถ ์ด๋ฏธ์ง ํ์ผ์ ๋ณด๋ด์ฃผ๋ ๋ก์ง์ด์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ API๋ ๊ฐ๋ ์ ์ก ์คํจ๋ ์์ฑ ์คํจ ๋ฑ์ ๋ฌธ์ ๋ค์ด ๋ฐ์ํ์ต๋๋ค. ๊ทธ๋์ ๋น์ฉ์ ๊ฐ๊ณผ ์๋น์ค ์์ ํ๋ฅผ ์ํด ์์ฒด API ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ ์์๋ดค์ต๋๋ค.
๊ฐ๋ฐ ๊ณผ์
์ฌ์ฉ ์ค์ธ API๋ฅผ ํตํด 40๊ฐ ๋ณดํ์ฌ์ ์ฒญ๊ตฌ์ ์์ PDF ํ์ผ๋ค๊ณผ ํฉ์ค ๋ฒํธ, ์ด๋ฉ์ผ์ ์ ์ ์์์ต๋๋ค. PDF ํ์ผ์์ ์ํ๋ ์์น์ ํ
์คํธ๋ฅผ ์ฝ์
ํ๋ ๊ฒ๊ณผ ๋ณดํ์ฌ ์ฒญ๊ตฌ์ ์์์ PNG๋ก ๋ณํํ ํ์ผ์์ ํ
์คํธ๋ฅผ ์ฝ์
ํ๋ ๊ฒ์ ๋น๊ตํด ๋ดค์ต๋๋ค. Python๊ณผ Go์ ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ
์คํธ ํ๊ณ , Go ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ๋น๊ต์ ๋นจ๋์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ PDF์์ ๋ฐ๋ก ํ
์คํธ๋ฅผ ์ฝ์
ํ๋ ์์
์ PDF๋ฅผ ํด์ ์๊ฐ์ด ์ค๋ ์์๋๊ณ , ๋ฐ๋ฉด์ PNG์์ ํ
์คํธ๋ฅผ ์ฝ์
ํ๋ ์์
์ ๋นจ๋์ต๋๋ค. ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ฉด ์๋น์ค์์ API๋ฅผ ์ฌ์ฉ์ ๋ฌด๋ฆฌ๊ฐ ์์ผ๋ PNG์์ ์์
์๋ฃ ํ, PNG -> PDF ๋ณํ์ผ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๋ชจ๋ ์ฒญ๊ตฌ์ PDF๋ฅผ PNG๋ก ๋ณํํ๊ณ Go์ Imagor ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด ํน์ ํฌ์ง์
์ Text ๋ผ๋ฒจ์ ์ฝ์
ํ๊ณ PNG๋ก ์ฒญ๊ตฌ์ ์์์ ์์ฑํ์ต๋๋ค. ์์ฑ๋ PNG๋ Go์ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด ๋ค์ PDF๋ก ๋ณํํ๊ณ , Node Mailer๋ฅผ ์ด์ฉํด PDF ํ์ผ์ ์ฒจ๋ถํด ๋ณดํ์ฌ ๋ฉ์ผ๋ก ๋ณด๋ผ ์ ์์์ต๋๋ค. Go๋ฅผ ์น์๋ฒ๋ก ๋ง๋ค์๋๋ฐ Beego ํ๋ ์์ํฌ๋ฅผ ํ์ฉํด ๊ฐ๋ฐํ๊ณ , ๋ฉ์ธ ์๋ฒ์ธ NestJS ์๋ฒ์์ ํต์ ํด ๊ธฐ๋ฅ์ ์ด์ฉํ ์ ์๊ฒ ํ์ต๋๋ค. ๊ฐ๋ฐ ํ๊ณ ๋ฐ ์ํ
๊ฐ๋ฐ์ด ๋๋๊ณ ๊ฐ๋ฐ๋ ์๋น์ค๋ฅผ ์ด์ฉํ๋๋ฐ ์ฌ๋ฌ ํ๊ณ์ ์ด ์์์ต๋๋ค. ์ฒญ๊ตฌ์ ์์์ด ๋ณ๊ฒฝ ์ ๋๊ตฐ๊ฐ ์์ ๊ด๋ฆฌํด์ผ ํ์ต๋๋ค. ๊ทธ๋์ ๊ด๋ฆฌ์ ์น ์ฑ์ NextJS์ NestJS๋ฅผ ๊ฐ๋จํ ๋ง๋ค์ด, ์ฒญ๊ตฌ์ ์์์ด ๋ณ๊ฒฝ ์ ์
๋ ฅ ํ
์คํธ์ ์ขํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๊ฒ ๋ง๋ค์์ต๋๋ค. ๋ค์์ ๊ธฐ์กด์ ์ฒญ๊ตฌ ์๋น์ค ์ธ๋ถ ์
์ฒด์ ์์๊ธ์ผ๋ก ๊ณ์ฝ๋์ด ์ฒญ๊ตฌ API ์๊ธ์ด ์ ๋ ดํ ์ํ์์ต๋๋ค. ํ์ง๋ง Node Mailer๋ฅผ ์ด์ฉํด ๋ณด๋ด๋ ๋ฉ์ผ๋ ์ด์์์๋ ์ ๋ฃ ๋ฉ์ผ, ํฉ์ค API๋ฅผ ์ฌ์ฉํด์ผ ํ๋๋ฐ ์ฒญ๊ตฌ ํ์๊ฐ ๋ง๋ค๋ฉด ์คํ๋ ค ์ธ๋ถ API ์ฌ์ฉ ๋ณด๋ค ๋น์ธ์ง๋ ๊ฒ์ ์๊ฒ ๋์ต๋๋ค. ๊ฒ๋ค๊ฐ ์ฒญ๊ตฌ ๋ก์ง์ ์ํํ๋ Beego์๋ฒ์ ์๋ฒ๋น์ ์๋น์ค ์ ์ง๋ฅผ ์ํ ์ด์ ์ธ์ ๋น์ฉ์ ์๊ฐํ๋ ์ ์ ๋ ํ๊ณ์ ์ด ๋๊ปด์ก์ต๋๋ค. ๋ํ ๊ฐํธ ์ฒญ๊ตฌ๋ฅผ ํตํด ์์ต์ผ๋ก ์ด์ด์ง๊ธฐ ๋ณด๋ค ๋ฌด์ ์๋น์ค ๊ธฐ๋ฅ์ด์ด์ ์ธ๋ถ ์
์ฒด ์๋น์ค ๋ถ์์ ์ ๋์ํ๊ธฐ ์ํด ํฌ์ํ๊ธฐ์๋ ์ข์ง ๋ชปํ์ต๋๋ค. ์ฒ์์๋ ๊ฐ๋ฐ ๊ฐ๋ฅ์ฑ์ ์์๋ณด๋ ๊ฒ์ด์์ง๋ง, ๋
ผ์๋ฅผ ํ๋ค ๋ณด๋ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ๊ฒ ๋์ต๋๋ค. ํ์ง๋ง ๊ฐ๋ฐ๊ณผ ๋น์ฉ์ ๋ ๊ณ ๋ คํ ๊ตฌํ์ ๋ชฉ์ ์ ๋ ๊ฐ๋ฐ์ด ๋์์ต๋๋ค. ์ถํ์๋ ๊ฐ๋ฐ ์์ ์ ์ ์ง ๊ด๋ฆฌ, ๋น์ฉ์ ๋ ์๊ฐํ๊ฒ ๋ ๊ณ๊ธฐ๊ฐ ๋์ต๋๋ค.
๋ณดํ์์งv2
2020.11~2021.01
PM, ํ์คํ ๊ฐ๋ฐ
#Typescript #Python #ExpressJS #Pandas #Sklearn
์๊ฐ
๋ณดํ ์์ฅ์์ ๊ฐ์
์๋ค์ ์ค๊ณ์ฌ๋ค์ ์ค๋ช
์ ๋ฐ๋ผ ๋ณดํ์ ๊ฐ์
ํฉ๋๋ค. ๋ณดํ ์ค๊ณ์์ ๊ณ ๋ คํ ์ ์ ๋์ด๋, ๋ณด์ฅ, ๋ณด์ฅ๊ธ์ก, ๋ง๊ธฐ ๋ฑ ๋ณต์กํ๊ฒ ์ฐ๊ด๋์ด ์๊ณ , ๋ํ 1๊ฐ ์ํ์ผ๋ก ํ์ ๋ณด์ฅ์ ์ถฉ์กฑํ ์ ์์ด ์ฌ๋ฌ ๋ณดํ ์ํ์ ์กฐํฉ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๊ณ ๊ฐ์ด ์๊ธฐ ํ๋ ๊ตฌ์กฐ์
๋๋ค. ์ด๋ฐ ์ค๊ณ์ฌ์ ์๋น์ ๊ฐ์ ์ ๋ณด ๋น๋์นญ์ ํด๊ฒฐํ๊ธฐ ์ํด ๊ณ ๊ฐ ์ ๋ณด์ ๋ณดํ ์ํ ์ ๋ณด๋ค์ ํ ๋๋ก ํ ๊ฐ์ธํ๋ ๋ณดํ ์ง๋จ๊ณผ ํ์ ๋ณดํ ์ํ ๋ฌถ์์ ์ถ์ฒํ๋ ๋ณดํ ์๋ฃจ์
์
๋๋ค.
๊ฐ๋ฐ ์ด์
์ด๊ธฐ ๋ณดํ ์๋ฃจ์
์ ์ฌ๋ฌ ์๋ฒ ๊ฐ ์ํธ์์ฉ์ ํตํด ๋์ํ๊ณ ์ฝ๋์ ERD์ ๋ณต์ก๋๊ฐ ์ฌํ๋ฐ๋ค, ์ด๊ธฐ ๊ฐ๋ฐ์ ๋ถ์ ๊ฐ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํด ์ด์๋๊ณ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค ์ด๊ธฐ ๊ฐ๋ฐ์ ๋ถ์ด ํด์ฌํ์
จ๊ณ , ์๋ฌด๋ ์๋ฃจ์
์ ์
๊ทธ๋ ์ด๋ํ ์ ์๋ ๊ธฐ์ ๋ถ์ฑ ์ํ๊ฐ ๋์๊ณ , ํ
ํฌ ๋ฆฌ๋ ๋ถ๋ค์ด ์์ฐจ๋ก ์
์ฌํด ์๋ ํ์ง๋ง ๋ง์ด๊ทธ๋ ์ด์
ํ์ง ๋ชปํ๊ณ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ค ๊ฐ์๊ธฐ ๋ณดํ์ฌ์ ๋ณดํ ์๋ฃจ์
๋ฉํ์ ๋ํ ๋
ผ์๊ฐ ์์๊ณ , ๋ด๋ถ์ ์ผ๋ก ๋น ๋ฅธ ์
๊ทธ๋ ์ด๋๊ฐ ํ์ํด์ง๋ฉด์ ๊ธ ๊ฐ๋ฐ์ ๋งก๊ฒ ๋์์ต๋๋ค.
๊ฐ๋ฐ ๊ณํ
์ฐ์ ์ฝ๋๋ฅผ ์ฝ๊ฒ ๋ง๋ค๊ณ ์ถ์์ต๋๋ค. ๊ทธ ๋์ ์์ง ๊ฐ๋ฐ์ ํ์ํ ํ๋ก์ธ์ค๋ฅผ ์์ธํ ์ ๋ฆฌํ์ต๋๋ค. ๋ณดํ ์์ง์ ํฌ๊ฒ 2๊ฐ์ง ๊ธฐ๋ฅ์ด ์์๋๋ฐ, ๊ณ ๊ฐ์ด ๊ฐ์ง ๋ณดํ์ ๋ํ ์ง๋จ๊ณผ ๊ณ ๊ฐ์๊ฒ ํ์ํ ๋ณดํ ์ํ ์กฐํฉ์ ์ถ์ฒํ๋ ๊ฒ์ด์์ต๋๋ค. ๋ณดํ ์ง๋จ์ ๊ฐ๋ฐํ๊ธฐ ์ 2๊ฐ์ง ์ฌ์ ์์
์ด ํ์ํ์ต๋๋ค. ML ๋ชจ๋ธ์ ์ด์ฉํด ๊ฐ๋ฐ๋์๊ธฐ ๋๋ฌธ์, ํ๋ จ์ ์ฌ์ฉ๋๋ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค๊ณ ๋ชจ๋ธ์ ๋ง๋ค์ด์ผ ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณดํ ์ง๋จ ์๋ฃจ์
์ ์
์ถ๋ ฅ ๋ฐ์ดํฐ์ ๋ํ ํ์ฑ ๋ฐ ๊ตฌ์กฐํ ๋ชจ๋์ ๋ง๋ค์ด์ผ ํ์ต๋๋ค. ๋ค์์ผ๋ก ๋ณดํ ์ํ ์กฐํฉ ์ถ์ฒ์ ๋ณดํ ์ํ ์กฐํฉ์ ํตํ ๋ณด์ฅ๊ณผ ๋ณด์ฅ๊ธ์ก์ ๋ฌถ์์ ๋์ถํด์ผ ํ์ต๋๋ค. ์ง๋จ์ ํตํด ์ป์ ๊ณ ๊ฐ์ ๋ณดํ ์ํ์ ๊ณ ๊ฐ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์ผ์ ๊ธฐ์ค์ ๋ง๊ฒ ๋ถ์กฑํ ๋ณด์ฅ์ ๋์ถํ๊ณ ์ํ๋ค๋ก ์ฒด์์ฃผ๋ ๋ฐฉ์์
๋๋ค. ML ๋ชจ๋ธ๊ณผ ์๋ฃจ์
๊ฐ๋ฐ
๊ธฐ์กด ์ฝ๋๋ฅผ ๋ถ์ ํ, ๋ณดํ ์ค๊ณ ์ฐ๊ตฌ์๋ถ๋ค๊ณผ ํ์
์ ํตํด ์ง๋จ์ ์ฌ์ฉํ ์
๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ์ต๋๋ค. ๊ทธ ๋์ ํ๋ซํผ์ ํตํด ์์ธ ๋ฐ์ดํฐ์ ๊ฐ์ธ์ ๋ณด๋ฅผ ๋น์๋ณํํ๊ณ ์ ์ ํ๋ ์์
์ ์ํํ์ต๋๋ค. ๊ทธ๋ ๊ฒ ์ ์ ๋ ๋ฐ์ดํฐ๋ก ์ค์ ์ค๊ณ์ฌ ๋ถ๋ค๊ณผ ์ํ์ ๋ํ ์ ์๋ฅผ ๋์ถํ๊ณ , ์ ์ ๊ธฐ์ค์ ๋ฐ๋ผ 3๊ฐ์ ์ง๋จ ํด๋์ค์ ๊ธฐ์ค์ ๋ง๋ค์์ต๋๋ค. ๊ทธ๋ ๊ฒ ๋ง๋ค์ด์ง ๋ฐ์ดํฐ๋ก Sklearn์ ํ์ฉํด ๋ค์ค ๋ก์ง์คํฑ ํ๊ท ๋ชจ๋ธ์ ๋ง๋ค์ด ๋ณดํ ์ํ์ ๋ํด ๊ณ ๊ฐ ์ ๋ณด์ ๋ฐ๋ผ 3๊ฐ์ ํด๋์ค๋ก ํ๋จ๋๋๋ก ๋ชจ๋ธ์ ๋ง๋ค์์ต๋๋ค. ์ด ํ ๋ชจ๋ธ์ ๊ฒ์ฆ๊ณผ ํ
์คํธ, ์ ์ ๋ณ๊ฒฝ, ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ ๋ณ๊ฒฝ ๋ฑ์ ๋ฐ๋ณต ์์
์ ์ํํ๊ณ ๋ณดํ ์ฐ๊ตฌ์๋ถ๋ค๊ณผ ํฉ๋ฆฌ์ ์ผ๋ก ํ๋จ๋๋ ๋ชจ๋ธ์ด ์์ฑ๋์ด ์์์ ์ฌ์ฉ๋๋ ํ๋ผ๋ฏธํฐ๋ฅผ ๋์ถํ ์ ์์์ต๋๋ค. ๋ค์์ผ๋ก ์๋ฃจ์
์ ์
๋ ฅ ๋ฐ์ดํฐ์ธ ์ ์ฉ์ ๋ณด์ ๋ฐ์ดํฐ๋ฅผ ํ์ฑํ๋ ๋ชจ๋์ ๋ง๋ค์๊ณ , ๋์ถ๋ ์์๊ณผ ํ๋ผ๋ฏธํฐ๋ฅผ ํตํด ์ง๋จ์ ์๋ฃํ๊ณ ์๋ฃจ์
์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๋ชจ๋์ ๋ง๋ค์ด ๊ฒฐ๊ณผ๋ฅผ API ์์ฒญ์ผ๋ก ์ป์ ์ ์๊ฒ ๋ง๋ค์์ต๋๋ค. ์ดํ ์ ๊ท ์๋ฃจ์
์ผ๋ก ํ๋ซํผ์ ์
๋ฐ์ดํธํ์๊ณ , ๋ณดํ์ฌ์์ ์ํ๋ ์ง๋จ ๊ธฐ์ค๊ณผ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ปค์คํ
ํ๋ฉฐ ๋ฉํ์ฉ ์์ง๋ ๋ง๋ค ์ ์์์ต๋๋ค. ํํ๊ณผ ํด๊ฒฐ ๊ณผ์
๋ณดํ ์ถ์ฒ์ ๋ชฉ์ ์ ํ์ํ ๋ณด์ฅ๊ณผ ๊ธ์ก ๊ธฐ์ค์ ๊ฐ์ฑ๋น ์ข์ ์ํ์ ์ด์ฉํด ์ถฉ์กฑ์์ผ ์ฃผ๋ ๊ฒ์
๋๋ค. ๋ณด์ฅ์ ์ถฉ์กฑ์์ผ์ฃผ๋ ค๋ค ๋ณด๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ๋ณด์ฅ์ ์ข
๋ฅ๊ฐ ๋๋ฌด ๋ง์๊ณ , ๊ธ์ก ๊ธฐ์ค๋ ๋ค์ํ๋ฐ๋ค ์ํ์ ํน์ฝ์ ๋ฐ๋ผ ์ํ์ ์ฑ๊ฒฉ๋ ๋ฌ๋ผ์ก์ต๋๋ค. ๋ชจ๋ ํน์ฑ์ ๋ค ๊ณ ๋ คํ๊ธฐ์๋ ์ ํ ์๊ฐ์ ๊ธฐ๋ฅ์ ๋ง๋ค ์ ์์์ต๋๋ค. ํํ์ ์์ํ์ต๋๋ค. ํ์ ๋ณด์ฅ ๊ธฐ์ค์์ ํ์ ๋ณด์ฅ์ ์ ์ ํ๊ณ ๊ธ์ก ๊ธฐ์ค๋ ์ค์ฌ๋๊ฐ๋ฉฐ ๋ฒ์๋ฅผ ์ขํ๊ฐ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ์ค๊ณ์ฌ ๋ถ๋ค์ด ๊ฐ์
์ํฌ ์ ์๋ ์ํ๋ค์ ์
๋ฐ์ดํธํ๊ณ ๋ณดํ ์ฐ๊ตฌ์๋ถ๋ค๊ณผ ์ฐ๊ตฌ๋ฅผ ํตํด ์ ์ข์ ๊ท์ฝ์ด ์๋ ์ข์ ์ํ๋ค๋ง ์ํธ๋ฆฌ์ ๋๋๋ก ๋งค๋ฌ ์ํ ์
๋ฐ์ดํธ๋ฅผ ๊ธฐ์ค์ ์ ํ์ต๋๋ค. ์ด์ ์ถ์ฒ์ ์ํด ๊ฐ์ธ ์ ๋ณด๊ฐ ์
๋ ฅ๋๋ฉด ์ถฉ์กฑํ ๋ณด์ฅ๋ค์ ์ ์ธํ๊ณ ํ์ ๋ณด์ฅ๊ณผ ๊ธ์ก์ ์กฐํฉ์ด ๋ง๋ค์ด์ง๊ณ , ์ด๋ฅผ ์ถฉ์กฑํ๊ธฐ ์ ํ ๋ณด์ฅ๊ณผ ๊ธ์ก์ ๊ฐ์ง ์ํ ์กฐํฉ๋ค์ ๋ง๋ค์ด์ผ ํ์ต๋๋ค. 12๊ฐ์ ๋ณด์ฅ๊ณผ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ณด์ฅ ๊ธ์ก ๊ธฐ์ค์ด ์์๊ณ , ์ถฉ์กฑ์ ์ํด ๊ฐ๋ฅํ ๋ชจ๋ ์กฐํฉ์ ๋ง๋ค๊ณ ๊ฐ์ฅ ์ ๋ ดํ ์กฐํฉ์ ์ฐพ์์ผ ํฉ๋๋ค. ๋ง์ฝ ๋ณด์ฅํ ๊ธ์ก์ด A,B,C ๋ณด์ฅ ๋ชจ๋ 5000๋ง์์ด๊ณ A,B,C ๋ณด์ฅ์ด 0~5000๋ง์๊น์ง 1000๋ง์ ๋ณํ๊ฐ์ด๋ฉด, ์ด 3๊ฐ ๋ณด์ฅ์ ์กฐํฉ์ ๋ชจ๋ ๋ง๋ค๋ฉด, (000),(001),...(555)๊น์ง 216๊ฐ์๊ณ , ์ด์ 216๊ฐ์์ [[(555)],[(001)(554)],[(101)(222)(232)],... ์ด๋ฐ์์ผ๋ก ๋ถ๋ถ์งํฉ์ ๊ฒฝ์ฐ์ ์๊ฐ 2^216 ์ด์์ต๋๋ค. 10์ง์๋ก ๋ณด๋ฉด 10^64~10^65 ์ฌ์ด์์ต๋๋ค. ๋น์ฐํ ์กฐํฉ์ ๋ง๋ค๋ค๊ฐ ์ปดํจํฐ๊ฐ ์ฐ์ฐ์ ๋ฉ์ท์ต๋๋ค. ์ด๋ฒ์๋ ๋ชจ๋ ์กฐํฉ์ด ์๋ ๊ฐ๋ฅํ ์กฐํฉ์ ๋จผ์ ์ ๋ณํด ๊ณ์ฐํ๊ฒ ํ์ต๋๋ค. 216๊ฐ์ ์กฐํฉ์ ์ํํ๋ฉฐ, ์ฐ์ (555)๊ฐ ๋ ์ ์๋ ์กฐํฉ๋ง ์ฐพ์๋ด๋, ๊ฐ์๊ฐ 42738๊ฐ๊ฐ ๋์์ต๋๋ค. ์
๋ ฅ ์กฐํฉ ์์ฑ์ด ๋น ๋ฅด๊ฒ ๋ง๋ค์ด์ก๊ณ , ๊ทธ ์กฐํฉ์ ๋ง์กฑํ ์ ์๋๋ก ์
๋ฐ์ดํธ๋ ์ํ๋ค์์ ์ฐพ์๋ด ๊ฐ๊ฒฉ์ ๋น๊ตํ๊ณ ๊ฐ์ฅ ์ ๋ ดํ ์ํ ์กฐํฉ์ ๊ตฌ์ฑํ๋๋ก ๋ง๋ค์์ต๋๋ค. ๊ทธ๋ ๊ฒ ๊ฐ์ธํ๋ ๋ณดํ ์ํ ์กฐํฉ์ ๋์ถํ๋ ์๋ฃจ์
์ด ๊ฐ๋ฐ๋์ต๋๋ค. ํ๋ก์ ํธ ์ฑ๊ณผ
๋ชจ๋ ๋จ์๋ก ๋ถ๋ฆฌํด ๊ฐ๋ฐํ์ฌ ๋
๋ฆฝ๋ ๊ธฐ๋ฅ์ผ๋ก ์ฌ๋ฌ API ์๋น์ค๋ฅผ ๋ง๋ค๊ธฐ์ ์ฉ์ดํ๊ฒ ๋ณ๊ฒฝ๋๊ณ , ์ฌ๋ฌ ์๋ฒ ๊ฐ์ ์ํธ ์์ฉ์ด ์๋ ๋จ๋
์๋ฒ ๋์์ผ๋ก ๊ฐ๋ฐ๋์ด ์์ง ์๋ฃจ์
๋ฉํ์๋ ์์ํด์ก์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณต์กํ ERD๊ฐ ์ฝ๊ฒ ๊ฐ์ ๋๊ณ , DB์ ์ ์ฅํ ๋ฐ์ดํฐ์ ๋ก๊ทธ์ฑ ๋ฐ์ดํฐ๊ฐ ๋ถ๋ฆฌ๋๊ณ , DB ํต์ ๋ ์ต์ํํ์์ผ๋ฉฐ, ์๋ฃจ์
๋ก์ง ์ด ๊ฐ์ ๋๊ณ , ๋ถํ์ํ ๋์์ ์ ๊ฑฐํด ๊ธฐ์กด ๋๋น ํ๊ท 40๋ฐฐ ๊ฐ๋ ์๋๊ฐ ๊ฐ์ ๋์์ต๋๋ค. ์ฐ๊ตฌ์ ๋ถ๋ค์ด ์๋์ผ๋ก ํ๋ ๋ฐ์ดํฐ ๊ฒ์ฆ ๋ฐ ๊ฐ๊ณต ์์
๋ ๋ฆฌ๋ด์ผ ๋๋ฉด์ ReactJS, ExpressJS๋ก ๊ด๋ฆฌ์ ์น์ฌ์ดํธ๋ฅผ ๋ง๋ค์ด ๋ง์ ๋ถ๋ถ ์๋ํํ์ฌ ๊ด๋ จ ์์
์ ๋ํด ์
๋ฌด ์์ ์๊ฐ์ 85% ์ ๊ฐ์์ผฐ์ต๋๋ค.
Job Experience.
ํ๊ตญ์์ดํ๋น์์๋ฃจ์
์ค(์ฃผ)
๋ฏธ๊ตญ IMSํฌ์ค์ ํธํ์ผ์ฆ๊ฐ ํฉ๋ณํด ๋ง๋ ์ธ๊ตญ ์์ฅ ํ์ฌ๋ก์ ์ต๋ ๊ท๋ชจ์ ๋ณด๊ฑด์๋ฃ ๋ฐ์ดํฐ, ๋ง์ถคํ ์๋ฃจ์
๋ฟ ์๋๋ผ
ํ์ ๊ด๋ฆฌ ๊ฐ์ ์ ์ํ ๋จธ์ ๋ฌ๋, ์ ํํ ์์
์ ๋ต ๋ฑ์ ํฌํจํด ํด๋จผ ๋ฐ์ดํฐ ์ฌ์ด์ธ์ค ํ์ฉ์
๊ธฐ์ฌํ๋ ํ์ฌ๋ก์, ๋งค์ถ์ก 850์ต ์ด์์ผ๋ก ํฌ์ค์ผ์ด ๋ฐ์ดํฐ ํต๊ณ ๋ถ์๊ณผ ์ปจ์คํ
์ ์ง์ํ๋
๊ธ๋ก๋ฒ ํฌ์ค์ผ์ด ๋น
๋ฐ์ดํฐ ๊ธฐ์
AA, DS
์ธํ๋ผ ๋ฐ ์๋น์ค ์ด์
ํ์คํ ๊ฐ๋ฐ
2022.10~2025.07
- KINX Cloud ๋ฒ ์ด ๋ฉํ ์๋ฒ ๋ฐ NAS ์ฅ๋น ๊ด๋ฆฌ ๋ฐ KT, Azure Cloud ๊ฐ์ํ ์ธํ๋ผ ๊ด๋ฆฌ
- ๊ฐ ์๋น์ค์ ๋ฒ๊ทธ ์์ ๋ฐ ๊ณ ๊ฐ ์๊ตฌ์ฌํญ์ ๋ฐ๋ฅธ ๊ฐ์ (NuxtJS, ExpressJS, Scala, Playframework, AngularJS)
- ์ฌ๋ด ๋ฐ์ดํฐ ETL ์์
(MSSQL) ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ ์ ์ง ๊ด๋ฆฌ(MSSQL, PostgreSQL, MySQL)
- IT ๊ธฐ์ค๊ณผ ๋ณด์ ๊ท์ ์ค์๋ฅผ ์ํ ์ ์ง๋ณด์ ๋ฐ ์๋ฃจ์
์ ์ฉ
- Script๋ฅผ ํตํ ์ธํ๋ผ ๊ด๋ฆฌ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ(Python, Powershell, NodeJS)
- ๊ณต๊ณต ๋ฐ์ดํฐ(API, Crawler) ์๋ ์์ง ์ฑ ๊ฐ๋ฐ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ถ(Selenium, Celery, Django, Redis, PostgreSQL, MSSQL)
๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ๋ฐ ์๊ฐํ ํ๋ก์ ํธ
๋ฐ์ดํฐ ์์ง๋์ด๋ง ๋ฐ ์๊ฐํ
2024.10~2024.12
- ๋ฐ์ดํฐ ์์ง๋์ด๋ถ๋ค๊ณผ์ ํ์
์ ์ํ Nifi, Airflow, MageAI๋ฅผ ํ์ฉํ ETL ๊ตฌ์ฑ ๋ฐ ๊ฐ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ํตํฉ์ ์ํ Snowflake -> Azure MI SQL Server๋ก์ ๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์
- ์ ์ฝ์ฌ๋ฅผ ๋์์ผ๋ก ํ PowerBI, Spotfire๋ฅผ ํ์ฉํ ๋ฐ์ดํฐ ๋ฐ ์๊ฐํ ํ๋ก์ ํธ ๋๋ฆฌ๋ฒ๋ฆฌ
๋ถ์ฐ ์ค์ผ์ค๋ฌ๋ฅผ ํตํ ๋ฐ์ดํฐ ์์ง ๋ฐ ์๋น์ค ๊ฐ๋ฐ
ํ์คํ ๊ฐ๋ฐ
2024.07~2024.11
- ๋ถ์ฐ ์ค์ผ์ค๋ฌ๋ฅผ ํตํ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์์ง ์๋ํ ๋ฐ ์๋น์ค ์๋ฒ ๊ฐ๋ฐ(Go, Fiber, Asynq, Redis, PostgreSQL, MySQL)
- ๊ด๋ฆฌ์ ๋ฐ ์๋น์ค ์น ์ฑ ๊ฐ๋ฐ(Typescript, NextJS, NextUI)
- ์๋น์ค ์ธํ๋ผ ๋ฐ CI/CD ๊ตฌ์ฑ(Nginx, Jenkins, KT Cloud)
์ฌ๋ด ์ธํ๋ผ๋ฅผ ํตํ ๋น์ฉ ์ ๊ฐ ๋ฐ ๋ก๊ทธ ์์คํ
์ ์ฉ
ํ์คํ ๊ฐ๋ฐ
2024.03~2024.06
- Spotfire Server ๊ด๋ จ KT Cloud ๊ฐ์ํ ์์ฐ์ Azure Cloud์ ์ฌ๋ด ๋ฌผ๋ฆฌ ์์ฐ์ ๋ค์ ๊ตฌ์ฑํด ์๊ธ ์ ๊ฐ(Spotfire, KT Cloud, Azure)
- KINX ๋ฌผ๋ฆฌ NAS ์ฅ๋น ์ค ํ์ ๋ฐ์ดํฐ๋ฅผ ์คํฌ๋ฆฝํธ๋ก ์ ๋ณํด Azure SA๋ก ์ด๊ด(Synology NAS, Azure Storage Account / File Share)
- ์ ์ ํ๋๋ถ์์ ์ํ ์๋น์ค ๋ก๊ทธ ์ ์ฉ ๋ฐ Windows, Linux ์๋ฒ ๋ด ์ค๋ฅ ๋ก๊ทธ ์์คํ
๊ฐ๋ฐ ๋ฐ ์ ์ฉ(Python, NuxtJS, ExpressJS)
์ฌ๋ด ์ธํ๋ผ ์ด์ฉ์ ์ํ ๊ธฐ๋ฐ ์์
๋ฐ ์๋น์ค ๋ฒ๊ทธ ํด๊ฒฐ ๋ฐ ๊ฐ์
ํ์คํ ๊ฐ๋ฐ
2023.12~2024.02
- ์ฌ๋ด Spotfire Server ์ธํ๋ผ์ ์๋น์ค ๊ฐ JWT ํ ํฐ ์ธ์ฆ์ผ๋ก Authentication ์ฐ๊ฒฐ ์ ์ฉ(Spotfire, ExpressJS)
- ์ขํ ๋ฐ์ดํฐ ๊ฐ ์ง์ , ๋๋ณด ๊ฑฐ๋ฆฌ ๋ก์ง ๊ฐ์ ์ ํตํด ํ๋ก์ธ์ค ๋ณต์ก๋์ ์๊ฐ, ์๊ธ ์ ๊ฐ(Python, MSSQL)
- SOAP API ๋ฒ๊ทธ ์์ ๋ฐ ์๋ฒ ๋ฒ์ ์
๊ทธ๋ ์ด๋(Scala, Playframework, AngularJS, NuxtJS, ExpressJS)
๋ฐ์ดํฐ ์์ง ์๋ํ ๋ฐ ์๊ธ ์ ๊ฐ์ ์ํ ๋์๋ณด๋ ์ฑ ๊ฐ๋ฐ
ํ์คํ ๊ฐ๋ฐ
2023.08~2023.11
- ์ ๊ท Spotfire Analyst ์ธํ๋ผ์ ์๊ธ ์ ๊ฐ์ ์ํด Dashboard ๋ชจ๋ฐ์ผ/๋ฐ์คํฌํ ์ฑ๊ณผ ์๋ฒ ๊ฐ๋ฐ(Flutter, Flet, Fastapi)
- ์๋ฒ ์ธํ๋ผ ๋ฐ CI/CD ๊ตฌ์ฑ(Jenkins)
- ์น์ฌ์ดํธ ์ฃผ๊ธฐ์ ํฌ๋กค๋ฌ ์น ์ฑ ๋ฐ ์๋ฒ ๊ฐ๋ฐ(Selenium, Celery, Django, Redis, React)
- ๊ธฐ์กด Spotfire Server ๋ฐ Analyst์ ๋ฒ๊ทธ ์์ ๋ฐ ์ด์(Spotfire)
์ฌ์ด๋ฒ ๊ณต๊ฒฉ ๋์๊ณผ ๋ณด์ ๋ฐ ๋ฐฑ์
์์คํ
๊ฐ์ , Spotfire ์ธํ๋ผ ๋ฉ์ด์ ์
๊ทธ๋ ์ด๋
ํ์คํ ๊ฐ๋ฐ
2023.05~2023.07
- ์ฌ์ด๋ฒ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ ๋ฐ ์๋ฒ ๋ณต๊ตฌ, ๋ฐฑ์
์์คํ
์ถ๊ฐ ๊ฐ์ (Bash Script)
- letencrypt ssl ์ธ์ฆ์ ๊ฐฑ์ ๋ฐ ๋๋ฉ์ธ ๋งตํ ์๋ํ(Bash Script, Nginx, Docker)
- ์ฌ์ด๋ฒ ๊ณต๊ฒฉ์ ๋ํ Windows ์๋ฒ ๋ก๊ทธ ๋ถ์ ๋ฐ ๋ฐฉํ๋ฒฝ ๋ก๊ทธ ๋ถ์(Python, Bash Script)
- ๊ณต๊ณต ๋ฐ์ดํฐ ์์ง ๋ฐ ETL์ ์๋ํ(Python, Golang)
- Spotfire 7.11 -> 11.4 ์ธํ๋ผ ์
๊ทธ๋ ์ด๋, ํ
์คํธ ๋ฐ ์ด์(Spotfire)
- Global VPN์ ํตํ Cloud VPN ์ ์ ๊ตฌ์ฑ(KT Cloud, Azure)
๋ฐ์ดํฐ ๋ถ์ ์๊ฐํ ํ๋ก์ ํธ ๋ฐ ๋ฐ์ดํฐ ๊ตฌ์ถ ํ๋ก์ธ์ค ๊ฐ์ํ, ์ฌ์ด๋ฒ ๋ณด์ ๊ฐํ
ํ์คํ ๊ฐ๋ฐ
2023.03~2023.05
- ๋ฐ์ดํฐ ์๊ฐํ ํ๋ก์ ํธ๋ฅผ ์ํ ํต๊ณ ๊ตฌ์ฑ ๋ฐ Spotfire Server ์ธํ๋ผ ์ฑ๋ฅ ํ
์คํธ(Spotfire, MSSQL)
- TMAP API ๋ฐ์ดํฐ ๊ตฌ์ถ ์๋ํ ๋ฐ ๊ธฐ์กด ๊ตฌ์ฑ ๊ฐ์ํ ๋ฐ ์๋ ๊ฐ์ (Python, MSSQL)
- ๊ธ๋ก๋ฒ๊ณผ ํ์
์ ํตํ KT, KINX ๋ณด์ ์ทจ์ฝ์ ๊ฐ์ ๋ฐ ๋ณด์ ๊ฐํ, ๋คํธ์ํฌ/๋ฐฉํ๋ฒฝ/ํฌํธํฌ์๋ฉ ์ฌ๊ตฌ์ฑ
- KT, KINX์ ๋ถํ์ํ ์์ฐ์ ์ ๊ฑฐํด ์๊ธ ์ ์ฝ
๋ฐ์ดํฐ ๋ถ์ ๋ฐ ์๊ฐํ ํ๋ก์ ํธ ๋ฐ ํด๋ผ์ฐ๋ ๋ชจ๋ํฐ๋ง ์น ์ฑ ๊ฐ๋ฐ
ํ์คํ ๊ฐ๋ฐ
2023.01~2023.02
- ์ฌ๋ด Spotfire Server ์ธํ๋ผ๋ฅผ ํ์ฉํด SK Chemical ๋ฐ์ดํฐ ์๊ฐํ ํ๋ก์ ํธ ๊ฐ๋ฐ(Spotfire, MSSQL)
- KT Cloud ์๋ฒ ๋ชจ๋ํฐ๋ง ์น ์ฑ ๊ฐ๋ฐ(SvelteJS, Fastapi)
- ํด๋ผ์ด์ธํธ ์น์ฌ์ดํธ UI ํต์ผ ์์
(NuxtJS, NestJS)
- ๊ด๋ฆฌ์ ์น์ฌ์ดํธ ํ๋ก์ ํธ, ๋ถ์ ๋งตํ ๊ฐ์ (NuxtJS, ExpressJS)
- ๋ฐ์ดํฐ ๋ถ์์ ํตํ ์๋ชป๋ ์๋ณธ ๋ฐ์ดํฐ ๊ฒ์ถ ๋ฐ ๊ฐ๊ณต(Python, Spark, Pandas, MSSQL)
๊ธ๋ก๋ฒ ๋ณด์ ์๋ฃจ์
์ ์ฉ ๋ฐ ์ ๊ท ์๋น์ค ๊ฐ๋ฐ
ํ์คํ ๊ฐ๋ฐ
2022.10~2022.12
- ๊ธ๋ก๋ฒ ๋ณด์ ์ค์ ์ฌํญ ๋ฐ ์๋ฃจ์
์ ์ฉ
- ๋ณด์ ๊ฐ์ด๋๋ผ์ธ์ ๋ง๋ ๊ธฐ์กด ์น ์๋น์ค OAuth ์ฌ๊ตฌ์ฑ(NuxtJS, ExpressJS)
- ์ ๊ท ์๋น์ค PP์ ๋ฐ์ดํฐ ๋ถ์ ๋ฐ ์๊ฐํ ํ๋ก์ ํธ๋ฅผ ์ํ ๋ฐ์ดํฐ ๊ฐ๊ณต, ๋ถ์ ์๊ฐํ(Spotfire, NuxtJS, ExpressJS)
- ํด๋ผ์ด์ธํธ ์น์ฌ์ดํธ UI ๊ฐ์ ๋ฐ ์ ๊ท ๋ถ์ ํ์ด์ง ์ถ๊ฐ(NuxtJS, ExpressJS)
- ๊ด๋ฆฌ์ ์น ์ธ์ดํธ ๊ฒ์ ๋ฐ ์ ์ ๊ถํ ์ค์ ๊ฐ์ (NuxtJS, NestJS)
์ธํ๋ผ ๋ฐ ์๋น์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์
๊ทธ๋ ์ด๋
ํ์คํ ๊ฐ๋ฐ
2022.10~2022.10
- KT, KINX์ OS ๋ฐ EOL ์ง๋ ์ํํธ์จ์ด(๋ผ์ด๋ธ๋ฌ๋ฆฌ) ์
๊ทธ๋ ์ด๋
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฉ์ด์ ๋ฒ์ ์
๊ทธ๋ ์ด๋ ๋ฐ ๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์
(MSSQL, PostgreSQL)
์์ด์ง๋ท
100๋ง ์ ์ ์ ๋ณดํ ์ค๊ฐ์ก ์ฑ์ฅ๋ฅ 3๋
์์ 3000% ์ฑ์ฅ ๋ฟ ์๋๋ผ ๋ณดํ ๊ฐ์
์ ์ง์จ์ด 99%๋ก
์
๊ณ ํ๊ท ์ธ 70%๋ฅผ ํฌ๊ฒ ์๋๊ณ ์๋ ๋์ ์ค๊ฐ์ก 3000์ต์ ๋ํํ๊ณ ๋์ ํฌ์์ก 221์ต ์ด์์ Series C ์ธ์์ด ํ
ํฌ ์คํํธ์
์ฑ๊ฐ๋ฐ(์ ์์ฐ๊ตฌ์), ๋ฐ์ดํฐ์ฐ๊ตฌ์ค(์ฑ
์์ฐ๊ตฌ์), ๊ธฐ์ ๊ฐ๋ฐ์ค(ํ๋ก)
์ฆ๊ถ์ฌ ๋ณดํ ์์งv4 ๊ฐ๋ฐ
๋ฐฑ์๋ ๊ฐ๋ฐ
2022.07~2022.09
- ์ฆ๊ถ์ฌ ์๊ตฌ์ ๋ฐ๋ผ ๋ณดํ ๋ถ์ ๋ฐ ์ถ์ฒ ์์ง ๊ฐ๋ฐ(ExpressJS, PKG)
- ๋ณดํ ๋ถ์ ์์ง ์ ์์ ๋ํ ์ค๋ช
์ธ๋ถํ ๊ฐ๋ฐ(ExpressJS, Pandas, ๋ณดํ ๋๋ฉ์ธ ์ฐ๊ตฌ)
- ๋ก์ง์คํฑ ํ๊ท ๋ฐ ๋ค์ค ๋ถ๋ฅ๋ฅผ ํตํด ์ ๊ท ๋ถ์ ์์ง ๋ชจ๋ธ ๊ฐ๋ฐ(Keras)
- ์์ง์ ๋ฉํ ๋ฐ์ดํฐ์ ๋ง์ด๋ฐ์ดํฐ์ ์ ๊ท ๋ฐ์ดํฐ ํฌ๋งท์ ๊ทํฉ(Pandas)
- ์ ๊ท ์์ง์ ๋ฐ์ดํฐ ๊ด๋ฆฌ ์์คํ
๊ตฌ์ถ(ExpressJS)
๋ณดํ ์์งv3 ์ ๊ท ๋ฒ์ ๊ฐ๋ฐ
PM, ํ์คํ ๊ฐ๋ฐ
2022.04~2022.08
- ๋ด๋ณด ๋จ์์ ๋ถ์์ ํตํ ๊ณ ๊ฐ ๋ณดํ ๋ถ์ ์์ง ๊ฐ๋ฐ(Golang, Python, Keras, Pandas)
- ์ ๊ท ์์ง์ ๋ฉํ ๋ฐ์ดํฐ์ ๋ง๋๋ก ๋ฐ์ดํฐ ๊ด๋ฆฌ ์์คํ
์ฌ๊ตฌ์ถ(ExpressJS)
- API Service(SaaS) ์๋น์ค ์ด์์ ์ํ ๊ด๋ฆฌ์ ์น ์ฑ ๊ตฌ์ถ(NestJS, NextJS)
์์ฒด ๋ณดํ ์ฒญ๊ตฌ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ
PM, ํ์คํ ๊ฐ๋ฐ
2022.02~2022.05
- ๊ธฐ์กด ์ด์ฉํ๋ ๋ณดํ ์ฒญ๊ตฌ API๋ฅผ ๋ถ์ํด ๊ธฐ๋ฅ ์ค๊ณ
- ์
๋ ฅ์ ๋ฐ๋ฅธ PDF ์์ฑ ์๋ํ ๋ฐ ๋ฉ์ผ, ํฉ์ค ์ ์ก ๊ธฐ๋ฅ ๊ฐ๋ฐ(Golang)
- BToB ์๋ฃจ์
์ ์ํ API Service(SaaS)์ ์ฒญ๊ตฌ ๊ธฐ๋ฅ ์ถ๊ฐ(ExpressJS)
- ๋ณดํ ์ฒญ๊ตฌ ๊ด๋ จ ๊ด๋ฆฌ์ ์น ์ฑ ๊ฐ๋ฐ(NestJS, NextJS)
API Service ์๋น์ค ์น ์ฑ ๊ฐ๋ฐ ๋ฐ ์ฝ๊ด ๋ถ์ ๊ธฐ๋ฅ ๊ฐ๋ฐ
PM, ํ์คํ ๊ฐ๋ฐ
2021.11~2022.01
- ์ธ๋ถ API Service๋ฅผ ๋ฒค์น๋งํนํ์ฌ ๋ณดํ API Service์ ์๊ฐ / ํ
์คํธ๊ฐ ๊ฐ๋ฅํ ์น ์ฑ ๊ฐ๋ฐ(Hugo)
- ๊ฐํธํ ์ ๋ณด์ฑ ํ์ด์ง์ ๊ด๋ฆฌ์ ์น ์ฑ ๊ฐ๋ฐ์ ์ํ ์ฌ๋ด ์น ํ๋ก ํธ์๋ ํ
ํ๋ฆฟ ๊ฐ๋ฐ(NextJS, TailwindCSS, Storybook, Recoil)
- ์ ๋ณดํ์ฌ์ ์ฝ๊ด์ ๋ถ์ํด ๊ณ ๊ฐ์ด ์ดํดํ๊ธฐ ์ฌ์ด ์ฝ๊ด์ ๊ธฐ๋ฅ/๋ณด์์ ํน์ง์ ์ก์๋ด ์ ๊ณตํ๋ ์ ๊ท API Service ์ฐ๊ตฌ ๋ฐ ๊ฐ๋ฐ(Python, Pandas, ExpressJS)
- ์ฝ๊ด ๋ฐ์ดํฐ์ ์ค์ ๋ฐ์ ์ ์๋ ๋ณด์์ ๊ตฌ์ฒดํํ๊ธฐ ์ํด KOICD ์ง๋ณ์ฝ๋ ๊ฐ ์ฐ๊ฒฐ์ฑ์ ์ฐพ์ ๋งตํํ์ฌ ๊ณ ๊ฐ์๊ฒ ํ์ํ ๋ณดํ์ ์ถ์ฒํ๋ ์์ง ๊ฐ๋ฐ(ExpressJS, Pandas)
๋ณดํ์ฌ ๋ณดํ ์์งv2.1 ๊ฐ๋ฐ ๋ฐ API Service ๊ฐ๋ฐ
PM, ํ์คํ ๊ฐ๋ฐ
2021.05~2021.08
- ๋ณดํ ์ง๋จ/์ถ์ฒ ์์ง ์๋ฃจ์
๊ฐ๋ฐ ๋ฐ ๋ฉํ, ํ์ฌ์ ์์ง ์ค์น ๋ฐ ์ฌ์ฉ์ ์ํ ์ปจ์คํ
(Golang)
- API Service ์ฌ์ฉ๋ ํ์ธ ๋ฐ ๋ชจ๋ํฐ๋ง์ ์ํ ๊ด๋ฆฌ์ ์น ์ฑ ๊ฐ๋ฐ(NestJS, NextJS)
- 44๊ฐ ๋ณดํ์ฌ ๊ณต์์ค ํ์ผ ์์ง ์๋ฒ ๋ฐ ๋์๋ณด๋ ์น ์ฑ ๊ฐ๋ฐ(Selenium, Celery, Django, React)
- ๋ฐ์ดํฐ ๊ฒ์ฆ ์
๋ฌด๋ฅผ ์ํ ์๋ฒ ๊ฐ๋ฐ(ExpressJS)
- API Service๋ฅผ ์ํ ๊ธฐ๋ฅ ๋จ์๋ก์ ์๋น์ค ๋ถ๋ฆฌ ๊ฐ๋ฐ(ExpressJS)
- API Service์ GCP ์๋น์ค๋ฅผ ํตํ ๋ก๊ทธ ๊ด๋ฆฌ ์์คํ
๊ตฌ์ฑ(GCP, API Gateway, Cloud Run, Cloud Logging, BigQuery)
- API Service ์ค๊ณ์ ํ ํฐ์ ํตํ ๊ณ ๊ฐ ์ฌ์ฉ๋ ์ฒดํฌ ๋ฐ ๊ณผ๊ธ ๊ด๋ฆฌ ์์คํ
๊ฐ๋ฐ(ExpressJS)
๋ณดํ ์์งv2 ๊ฐ๋ฐ ๋ฐ ์ฑ๋ฅ ๊ฐ์
PM, ํ์คํ ๊ฐ๋ฐ
2020.11~2021.01
- ๋ฐ์ดํฐ ๋ถ์์ ํตํด ์ ๊ท ๋ณดํ ๋ถ์ ์์ง ์ค๊ณ ๋ฐ ๊ฐ๋ฐ(Sklearn, Pandas, ExpressJS)
- ์์ง ๋ฉํ ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ์ํ ๊ด๋ฆฌ์ ์น ์ฑ ๊ฐ๋ฐ(ExpressJS, ReactJS)
- ์์ง์ ๋ฐฉ๋ํ ๋ก๊ทธ์ฑ ๋ฐ์ดํฐ๋ฅผ Elastic Search๋ก ๋ถ๋ฆฌ ์ ์ฅํ์ฌ ์๋น์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ ๊ฐ์ (ElasticSearch, Logstash, Kibana, MongoDB, PostgreSQL, ExpressJS)
- ๋ณดํ ์์ง์ ๋ถํ์ํ ๋ก์ง ์ ๊ฑฐ์ ์ค๋ณต ์์
์ ๊ฑฐ, ๋ก์ง ์ฑ๋ฅ ๊ฐ์ ์ ํตํด ๊ธฐ์กด ๋๋น 40๋ฐฐ ๊ฐ๋ ์ฑ๋ฅ ํฅ์(ExpressJS)
- ์์ง ์ ์ง๋ฅผ ์ํ ์ฃผ๊ธฐ์ ๋ฐ์ดํฐ ์
๋ฌด ์๋ํ๋ฅผ ํตํด ๊ด๋ จ ์
๋ฌด ์๊ฐ 85% ์ ๊ฐ(ExpressJS)
๋ง์ด๋ฐ์ดํฐ๋ฅผ ๋๋นํ ์ฌ์ ๋ง์ด๊ทธ๋ ์ด์
๋ฐ ๊ด๋ฆฌ์ ๋ฐ ํ์ฌ ์๊ฐ ์น ์ฑ ๊ฐ๋ฐ
ํ์คํ ๊ฐ๋ฐ
2020.04~2020.08
- Laravel๊ณผ ExpressJS, MySQL๋ก ๊ตฌ์ฑ๋ ๊ธฐ์กด ๋ณดํ ์์ง ๋ฐ ์๋น์ค ์๋ฒ๋ฅผ ExpressJS, MongoDB๋ก ๊ตฌ์ฑ๋ ์ ๊ท ๋ณดํ ์์ง์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
(Laravel, ExpressJS, Koscom Cloud, NCP)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ MySQL -> MongoDB๋ก ๋ง์ด๊ทธ๋ ์ด์
(MySQL, MongoDB)
- ํตํฉ ๊ด๋ฆฌ์/ํ๋๋ ์น ์ฑ ๋ฐ ํ์ฌ ์๊ฐ ํ์ด์ง ๊ฐ๋ฐ(ReactJS, ExpressJS)
์ฌํ ์ฒญ๊ตฌ ์๋น์ค ๊ฐ๋ฐ๊ณผ ์ ์ง๋ณด์ ๋ฐ ๊ฐ์
PM, ํ์คํ ๊ฐ๋ฐ
2019.11~2020.03
- ๋ชจ๋ฐ์ผ ์ฑ ๋ฐ Webview(์น ์ฑ) ๊ฐ ํต์ ๋ชจ๋ ๊ฐ๋ฐ ๋ฐ ์ฑ ๋ด ๊ด๊ณ ํจ์จ ์ธก์ ์ ์ํ ์ ๋๋ธ๋ฆญ์ค ์ ์ฉ(Adbrix, React Native, ReactJS, ExpressJS)
- ๋ฅ๋งํฌ๋ฅผ ํ์ฉํ ํ๋๋ ๊ฐ์ธ ๊ณ ๊ฐ ์ ์ฉ ํ๋ก์ธ์ค ๊ฐ๋ฐํด ์ฑ ๋ด ๊ณ ๊ฐ ํ๋ณด(Adbrix, ReactJS, ExpressJS)