- 2023.02 ~ 2023.04
์ฝ๋ก๋19๊ฐ ์ํ๋จ์ ๋ฐ๋ผ ํด์ธ์ฌํ ์์๊ฐ ๊ธ์ฆํ๊ณ ์๋ค. ํด์ธ ์ฌํ์ ๊ณํํ๋ ๋ฐ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ํญ๊ณต๊ถ์ด๋ค. ๊ธฐ์กด ํญ๊ณต๊ถ ์๋งค ์ฌ์ดํธ์์ ๋ถํธํ ์ ์ ์ฐพ์ ์ ์์๋ค.
- ํญ๊ณต๊ถ ๊ฐ๊ฒฉ์ ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ์ง ์์ ์ง๊ธ ๋ณด๊ณ ์๋ ํญ๊ณต๊ถ ๊ฐ๊ฒฉ์ด ํฉ๋ฆฌ์ ์ธ์ง ์ ์ ์๋ค.
- ์ฌ๋ฌ ๊ฐ์ ํญ๊ณต๊ถ์ ํ ๋์ ๋น๊ตํ ์ ์๋ค.
- ์ฐํ ํญ๊ณต๊ถ์ ๊ฐ๊ฒฉ์ด ์ํ๋ ๊ฐ๊ฒฉ์ ๋๋ฌํ๋์ง ํ์ธํ๋ ๊ณผ์ ์ด ๊ท์ฐฎ๋ค.
- ๋๋ถ๋ถ ํญ๊ณต๊ถ ์์ฝ ์ฌ์ดํธ์์ ์ธ๊ธฐ ์ฌํ์ง๋ก ๋์๋ง ์ถ์ฒํ๋ค.
- ํญ๊ณต๊ถ ๊ฐ๊ฒฉ ์ถ์ด๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ณผ ์ ์๋ค.
- ์ฌ๋ฌ ๊ฐ์ ํญ๊ณต๊ถ์ ์ ํํด ํ ๋์ ๋น๊ตํ ์ ์๋ค.
- ์ํ๋ ๊ฐ๊ฒฉ์ ๋๋ฌํ๋ฉด ์ฐํ๊ฑฐ ์๋ฆผ์ ๋ฐ์ ์ ์๋ค.
- ๊ด๊ด์ง ๊ธฐ์ค์ผ๋ก ์ฃผ๋ณ ๊ณตํญ์ ์ง๋์ ํ์ํ๋ค.
- ์ฌํ ๋ฌผํ์ ๊ตฌ๋งค/๋์ฌํ ์ ์๋ค.
- ๊ฐ ๋๋ผ์ ๊ณตํญ ์์น์ ์์ธ ์ ๋ณด๋ฅผ ์ ๊ณต.
- ๋๋ฅ๋ณ ์ธ๊ธฐ ์ฌํ์ง๋ฅผ ์ ๊ณต.
- ์ฌํ์ง ํด๋ฆญ์, ์ง๋ ํด๋น ์ฌํ์ง๊ฐ ํ๋ ๋๊ณ , ์์ธ ์ ๋ณด๋ฅผ ์ ๊ณต.
- ์ฃผ๋ณ์ ๊ฐ๊น์ด ๊ณตํญ ์ ๋ณด์ ์์น ์ ๊ณต.
- ํธ๋/์๋ณต์ผ๋ก ๊ฒ์ ์ง์.
- ์ถ๋ฐ์ง/๋์ฐฉ์ง ์ ํ, ๋ ์ง ์ ํ, ๊ฒ์์กฐ๊ฑด(๊ฒฝ์ ์กฐ๊ฑด, ๊ฐ๊ฒฉ์กฐ๊ฑด) ์ค์ ํ ๊ฒ์ ์ง์.
-
์ค์ ์ ๋์ผํ ํญ๊ณต๊ถ ๋งํฌ์ ์์์ผ๋ก ํญ๊ณต๊ถ ๊ตฌ๋ณ.
-
ํญ๊ณต๊ถ์ 5๊ฐ๊น์ง ๋น๊ตํ ์ ์๋ ๊ธฐ๋ฅ ์ง์.
-
ํญ๊ณต๊ถ ์กฐํ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ ์ ๋ ฌ ๊ธฐ๋ฅ ์ง์.
- ๊ธ์ก ๋ฎ์ ์
- ๋ณ๋ํญ ํฐ ์
- ์ถ๋ฐ์๊ฐ ๋น ๋ฅธ ์
- ์์์๊ฐ ๋ฎ์ ์
-
๋ฌดํ ์คํฌ๋กค๋ก ์กฐํ ๊ฒฐ๊ณผ ์ ๊ณต.
- ๊ฐ ํญ๊ณต๊ถ์ ์์ธ์ ๋ณด์ ๊ฐ๊ฒฉ ๋ณํ์ ์ถ์ด ์ ๋ณด๋ฅผ ์ ๊ณต.
- ๋น๊ตํ๊ธฐ์ ๋ฃ์ ํญ๊ณต๊ถ์ ๋ํด ๊ฐ๊ฒฉ ๋น๊ต์ ์ถ์ด ๋น๊ต๋ฅผ ๊ทธ๋ํ๋ก ์ง์.
- ์ฐํ๊ธฐ ๊ธฐ๋ฅ & ์๋ฆผ ๊ธฐ๋ฅ ์ง์.
ํธ๋ ๊ฒ์ ๊ฒฐ๊ณผ
์๋ณต ๊ฒ์ ๊ฒฐ๊ณผ
-
์ด๊ฒ์/ํ๊ฒ์
- ์ฌํ๋ฌผํ ์ค๊ณ ๊ฑฐ๋ ์๋น์ค ์ ๊ณต.
-
๋น๋ ค์ฃผ์ธ์/๋น๋ ค๋๋ ค์
- ์ฌํ ๋ฌผํ ๋์ฌ ์๋น์ค ์ ๊ณต.
-
๋ชจ๋ ์นดํ ๊ณ ๋ฆฌ ์กฐํ ๊ฒฐ๊ณผ๋ฅผ ๋ฌดํ ์คํฌ๋กค ํํ๋ก ์ ๊ณต.
-
์ ๋ชฉ์ ๊ธฐ์ค์ผ๋ก ๋์์ ๋ฌผํ์ผ๋ก ๊ฒ์ ๊ธฐ๋ฅ ์ ๊ณต.
-
๊ฒ์๋ฌผ ๋ฑ๋ก/์์ ๊ธฐ๋ฅ
- ํด๋น ๋ฌผํ์ ๊ด๋ จ๋ ์ฌ์ง์ ์ฌ๋ฌ์ฅ ๊ธฐ์ ๊ฐ๋ฅ.
- ์์ด๋ ๋ฐ ๋๋ค์ ์ค๋ณต ๊ฒ์ฌ ์ฒดํฌ
- ๋ก๊ทธ์ธ ์, ํฌ๋ง ๊ฐ๊ฒฉ์ ์ ํด๋์ ์ฐํ ํญ๊ณต๊ถ ์๋ฆผ ์ง์.
- ์ฐํ ํญ๊ณต๊ถ์ ๋ํด ํฌ๋ง ๊ฐ๊ฒฉ ์ค์ ํ ์ ์๋ ๊ธฐ๋ฅ ์ง์.
- ํฌ๋ง ๊ฐ๊ฒฉ ์ดํ์ ํญ๊ณต๊ถ์ด ์ฌ๋ผ์ฌ ์, ์๋ฆผ ์๋น์ค ์ง์.
- pack ์๋น์ค์ ๋ํ ์ฐํ ๋ชฉ๋ก ์ ๊ณต.
- ํ๋งค์์ ๊ตฌ๋งค์์ ์ค์๊ฐ ์ฑํ ์ ๊ณต.
- ์๋ก์ด ๋ฉ์ธ์ง์ ๋ํ ์๋ฆผ๊ณผ ๊ณผ๊ฑฐ ๋ํ ๋ด์ฉ ๊ธฐ๋ก.
- ์ฌ์ง(์ฌ๋ฌ๊ฐ) ์ ์ก ๊ฐ๋ฅ.
- ๊ตฌ๋งค์๋ฃ๋ฅผ ๋ฑ๋ก ๊ฐ๋ฅ.
- ํ์๊ด๋ฆฌ : Gitlab
- ์ด์๊ด๋ฆฌ : Jira
- ์ปค๋ฎค๋์ผ์ด์ : Mattermost, Notion
- ๋์์ธ : Figma
- Postman
- Termius
- IDE : Visual Studio Code
- language
- node js
18.13.0
- node js
- formatter
- eslint
8.32.0 - prettier
2.8.3
- eslint
- Library
- react
18.2.0 - react-dom
18.2.0 - router
- react-router-dom
6.9.0
- react-router-dom
- state management tool
- react-redux
8.0.5 - reduxjs/toolkit
1.9.3 - redux-persist
6.0.0
- react-redux
- http
- Axios
1.3.4
- Axios
- map
- react-leaflet
4.2.1
- react-leaflet
- chart
- chart.js
4.2.1
- chart.js
- chat
- sockjs
0.3.24 - sockjs-client
1.6.1 - stompjs
2.3.3 - stomp/stompjs
7.0.0
- sockjs
- style
- styled-components
5.3.9 - react-icons
4.8.0
- styled-components
- etc
- aws-sdk
2.1349.0 - firebase
9.19.1 - jwt-decode
3.1.2 - js-sha256
0.9.0
- aws-sdk
- react
- IDE : Intellij IDEAย
2020.3 - language : Java openjdkย
11.0.15 2022-04-19 LTS - Springbootย
2.7.9- Spring Data JPA
- Spring Data redis
- Lombok
- Spring Security
- Spring Cloudย
2021.0.5 - Spring Cloud Discovery
- Spring Cloud Config
- Spring Cloud AWS
- Logback
7.2 - Validation
- Spring Web
- Spring Websocket
- Build tool : Gradleย
7.6 - QueryDslย
1.0.10 - firebase
7.1.1 - jackson
- Micrometer Prometheus
- com.auth0:java-jwtย
4.0.0 - okhttp3
4.2.2 - hadoop
3.2.2 - spark
3.2.1
- Mysql
8.0.32-0ubuntu0.20.04.2
- https
TLS 1.0 - Ubuntu
20.0.4 - Nginx
1.18.0 - Docker
20.10.23 - Jenkins
Jenkins/jenkins:lts-jdk11(Image tag name)
๐ฏ ๋น ๋ฐ์ดํฐ ๋ถ์ฐ ์์คํ ๊ตฌํ
-
โ ํญ๊ณต๊ถ ํฌ๋กค๋ง
- Selenium์ ํตํด G๋ง์ผ ํญ๊ณต์์ ๋งค์ผ ๋ฏธ๋ 7์ผ์น ํญ๊ณต๊ถ ๋ฐ์ดํฐ๋ฅผ ์์ง (1์ผ ์ฝ 40๋ง๊ฑด)
-
๐ Hadoop
- ์์งํ ํญ๊ณต๊ถ ๋ฐ์ดํฐ๋ฅผ ์ ์ฒ๋ฆฌ ๋ฐ ๋ถํ๋ฐฉ์ง๋ฅผ ์ํด ๋ถ์ฐ ์ ์ฅ
-
๐ง Spark
- Python ๊ธฐ๋ฐ์ PySpark ์ฌ์ฉ
- HDFS์ ์๋ ์ค๋ ๋ ์ง์ ํ์ผ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํด ํญ๊ณต๊ถ ์ ๋ณด๋ฅผ MySQL DB์ ์ ์ฅ
- HDFS์ ์๋ ๊ณผ๊ฑฐ ํ์ผ์ ๋ชจ๋ ์ฝ์ด ํญ๊ณต๊ถ์ ๊ณผ๊ฑฐ ๊ฐ๊ฒฉ ์ ๋ณด๋ฅผ ์ฐ์ฐ
๐ฏ MSA ์ค๊ณ
-
๋ฐฐํฌ
- ์๋น์ค๋ณ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅ.(๋ฐฐํฌ์ ์ ์ฒด ์๋น์ค์ ์ค๋จ์ด ์์)
- ํน์ ์๋น์ค์ ์๊ตฌ์ฌํญ๋ง ๋ฐ์ํ์ฌ, ๋น ๋ฅด๊ฒ ๋ฐฐํฌ ๊ฐ๋ฅ.
-
ํ์ฅ
- ๋ค์ํ๊ณ , ์๋ก์ด ์๋น์ค์ ๋ํ ์ ์ฐํ ํ์ฅ ๊ฐ๋ฅ.
-
์ฅ์
- ์ผ๋ถ ์๋น์ค์ ์ฅ์ ๊ฐ ์ ์ฒด ์๋น์ค๋ก ํ์ฅ๋ ๊ฐ๋ฅ์ฑ์ ์ฐจ๋จ. (User service ์ ํด๋นํ๋ ์ฅ์ ๊ฐ Owner service์ ์ํฅ์ ๋ฏธ์น์ง โ)
- ๋ถ๋ถ์ ์ฅ์ ์ ๋ํ ๊ฒฉ๋ฆฌ ์ฒ๋ฆฌ ๊ฐ๋ฅ.
๐ฏ redis์ฌ์ฉ
-
redis ์บ์ db
- redis์ ์ฑํ ๋ฐฉ ์ ๋ณด์ ์ฑํ ๋ฉ์์ง๋ฅผ ์ ์ฅ
- ์ฑํ ์ ์ฌ์ฉํ Redis Cache Strategy Pattern
- ๋ณ๊ฒฝ์ด ์ ๊ณ ์์ฃผ ์ฌ์ฉ๋๋ ์ ๋ณด๋ค(์ ์ ์ง ๋ฐ์ดํฐ/ ํ์ ๋ฐ์ดํฐ ์กฐํ) ์บ์๋ก ์ ์ฅ.
-
redis pub/sub
- STOMP์ Redis์ pub/sub๊ตฌ์กฐ๋ฅผ ์ด์ฉํ์ฌ ์ค์๊ฐ ์ฑํ ๊ธฐ๋ฅ ๊ตฌํ
-
Cache warming
- write backํ ์ ๋ 00์๋ถํฐ์ ์ฑํ ๋ฉ์์ง๋ฅผ redis์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ด ๋ฃ์ด๋
-
Write-Back
- ์๋ฒฝ 3์๋ง๋ค Spring Scheduler์ Jdbctemplate์ ์ด์ฉํ์ฌ, Redis์ ์์๋จ๋ ๋ฐ์ดํฐ๋ค์ db๋ก bulk insert๋ฅผ ์งํ
-
Look-Aside(Lazy Loading)
- ํด๋ผ์ด์ธํธ๊ฐ ์ฑํ ๋ฉ์์ง ์ฝ๊ธฐ ์์ฒญ ์ Redis์์ ๋จผ์ ํ์ธ
- ๋ ๊ณผ๊ฑฐ์ ์ฑํ ๋ฉ์์ง๋ฅผ ์์ฒญ ์ DB์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ์ฌ Redis์ ์ ์ฅ ํ, ๊ฒฐ๊ณผ ๊ฐ ๋ฐํ
- ๋ฌดํ์คํฌ๋กค์ ๊ตฌํํ๊ธฐ ๋๋ฌธ์, ํ๋ฒ์ ํ๋ฃจ ์น์ ๋ฐ์ดํฐ์ฉ๋ง Redis์ ์ ์ฅํจ.
-
Redis Sentinel
- HA๋ฅผ ์ํด Auto Failover๋ฅผ ์ํํ ์ ์๋ Sentinel์ ๊ตฌ์ฑํจ
- Redis ์๋ฒ 3๋, Redis Sentinel์ 5๋ ๊ธฐ๋
๐ฏ ๋ชจ๋ํฐ๋ง
- prometheus & grafana
- ์๋ฒ์ metric์ ์์งํ์ฌ, ํด๋น ์๋ฒ์ ๋ถํ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๋ฑ์ ์๊ฐํ
๐ฏ log๋ถ์
- elk
- logstash : ์๋ฒ์ ๋ก๊ทธ๋ฅผ ์์ง
- elasticsearch : ๋ก๊ทธ ๊ฒ์ ๊ธฐ๋ฅ
- kibana : ๋ก๊ทธ ๋ฐ์ดํฐ ์๊ฐํ
[ER Diagram](https://www.erdcloud.com/d/DQ8Lr5CfJQKmjWGvL)
| ์ตํฌ์ | ๊น์นํฌ | ์ด์๋ฏผ | ๊น์๋ฆฐ | ์ ํ๊ด | ํ์คํ |
|---|---|---|---|---|---|
| Leader & Backend | Backend | Backend | Backend | Frontend | Frontend |