- ์๋น์ค ์๊ฐ
- ๊ธฐํ ๋ฐฐ๊ฒฝ
- ๊ฐ๋ฐ ๋ฉค๋ฒ
- ๊ธฐ๋ฅ ์๊ฐ
- ์์ฐ ์์
- ๊ธฐ์ ์คํ
- ํ๋ก์ ํธ ์ผ์ ๋ฐ ์ฐ์ถ๋ฌผ
- ํ๊ณ
- ํ์ค ์๊ฐ :
์ฌ์ฉ์ ๋ง์ถคํ
์ฌํ๋ํ ๋ชจ์ง
ํ๋ซํผ - ์๋น์ค ๋ช
:
๋๋
-
์๊ฐ๊ณผ ๋์ ์ค๋น๋์ด ์๋๋ฐ ์ง์ธ๊ณผ ์๊ฐ ๋ง์ถ๊ธฐ ํ๋ ์ฌ๋๋ค
-
์์ ์ด ๋ถ์กฑํ ์ญํ ์ ์ฑ์ ์์ฑ๋ ์๋ ์ฌํ์ ๊ฐ๊ณ ์ถ์ ์ฌ๋๋ค
-
์ฌ๋ฏธ์๊ณ ์๋ก์ด ์ฌํ์ ๊ฐ๊ณ ์ถ์ ์ฌ๋๋ค
๐ ์ฌํ์ ๊ฐ๊ณ ์ถ์ ๋ชจ๋ ์ฌ๋๋ค!
์ฌํ์ ๊ฐ๋ ๊ฑด ์ข์๊ฑด๋ฐ ์๊ฐ์ด ๋ง๋ ์ง์ธ์ด ์๊ฑฐ๋, ํ๋ก ๊ณํ ์ธ์ฐ๊ณ ์คํ๋ ค ์ผ์ฒ๋ผ ๋๊ปด์ง ๋๊ฐ ์์ต๋๋ค. ๋๋
์ ์ด๋ฌํ ๋ถํธํจ์ ํธ๋ฆฌํจ์ ์ ๊ณตํ๊ณ ์ธ์ ๋ ์ง ๋ ๋ ์ค๋น๊ฐ ๋์ด์๋ ์ฌ๋๋ค๊ณผ ํจ๊ป ์ฌํ์ ๊ฐ ์ ์๋๋ก ํ๊ณ ์ ํ์์ต๋๋ค.
์ฐ๋ฆฌ์ ์ฌํ ๋ํ ๋ชจ์ง ์๋น์ค ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋จผ์ , ํ์ํ ์ญํ ์ ๊ตฌํ๊ณ ์์ ์๋ ์ญํ ์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ์๋ก์ ์ฅ๋จ์ ์ ์ฑ์์ฃผ๋ ๋ํ์ ๊ตฌํด ์ฌํ์ ๋ ๋ ์ ์์ต๋๋ค. ๋ํ ์ค์๊ฐ ์ฑํ
์ ํตํด ์ํตํ๊ณ , ์๋ก ๊ณํ์ ํจ๊ป ์์ฑ ๋ฐ ์์ ํ๋ฉฐ ์๋ก ์ฌํ์์ ์ถ๊ตฌํ๋ ์ ์ ๋ง์ถฐ๋๊ฐ ์ฑ๊ณต์ ์ธ ์ฌํ์ ๋ ๋ ์ ์์ต๋๋ค.
์ฌํ์ ๋ ๋๊ณ ์ถ์ ๋, ์ธ์ ๋ ๋์๊ฒ ํ์ํ ๋ํ์ ๊ตฌํด์ ๋ ๋์!
- ์ฐฌ๊ตฌ. ๊ฐ์กฑ ์ด์ธ์ ์๋ก์ด ์ฌ๋๋ค๊ณผ ํจ๊ปํ๋ ์ฌํ์ ๋ํ ์ค๋ ํธ๊ธฐ์ฌ ๊ธฐ๋๊ฐ
- ์์ ์๋ ์ญํ ์ ์ง์ํ๊ณ , ๋ถ์กฑํ ์ญํ ์ ์ฑ์ ์ฌํ์ ์์ฑ๋ ์์น
- ํจ๊ป ๊ฐ๋ ์ฌ๋๋ค๋ผ๋ฆฌ ์ฌํ ์ผ์ ์ ๊ณต์ ํด์ ์์ ๋ฐ ๊ณํ ๊ฐ๋ฅ
- ๊ธฐํ ๋ฐ ์ค๊ณ : 24.01.08 ~ 24.01.17
- ํ๋ก์ ํธ ๊ตฌํ : 24.01.18 ~ 24.02.15
- ๋ฒ๊ทธ ์์ ๋ฐ ์ฐ์ถ๋ฌผ ์ ๋ฆฌ : 24.02.14 ~ 24.02.16
- ์ฝ๋ ๋ฆฌํฉํ ๋ง : 24.02.23 ~ 24.02.29
๐ ์กฐ์ฉํ |
โ ๊ตฌ๋ณธ์น (Front-End) |
โ ๋ ธ์ธํฌ (Front-End) |
โ ๊น์์ญ (Back-End) |
โ ์ก์ค์ฌ (Back-End) |
โ ์กฐ์์ง (Back-End) |
UI/UX ์ค์๊ฐ ์๋ฆผ & ์ฑํ ๊ธฐ๋ฅ WebSocket & Stomp ํต์ FE ์ธํ๋ผ ๋ด๋น ํ๋ก์ ํธ ๊ณํ ์๋ฆฝ & ์ผ์ ๊ด๋ฆฌ |
UI/UX React |
UI/UX React |
REST API CI/CD Infra |
REST API Database |
REST API Database |
์น ์์ผ์ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์ ์๋ฒ ์ฌ์ด์ ๋ฉ์ธ์ง๋ฅผ ๊ตํํ๊ธฐ ์ํ ํต์ ๊ธฐ์ ์ ๋๋ค.
Socket Connection์ ์ ์งํ ์ฑ, ์ค์๊ฐ์ผ๋ก ์๋ฐฉํฅ ํต์ ํน์ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํ๊ณ , ์ํ ํ๋กํ ์ฝ, ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ํ ๋ฒ ์ฐ๊ฒฐ๋๋ฉด ๊ฐ์ ์ฐ๊ฒฐ์ ์ด์ฉํด ํต์ ํ๊ธฐ ๋๋ฌธ์ TCP ์ปค๋ฅ์ ๋น์ฉ์ ์๋ ์ ์์ต๋๋ค.
๋๋
์์๋ ์ค์๊ฐ ์ํ ๊ณต์ ๋ฅผ ์ํด ๋ชจ์ง๊ธ ๋ณ ์ฑํ
๋ฐฉ ๊ธฐ๋ฅ์ webSocket์ ์ฌ์ฉํฉ๋๋ค.
SSE๋ ์น ์ ํ๋ฆฌ์ผ์ด์ , ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ๋จ๋ฑกํฅ์ผ๋ก ์ค์๊ฐ ์ด๋ฒคํธ๋ฅผ ์ ์กํ๋ ์น ๊ธฐ์ ์ ๋๋ค.
์๋ฒ์์ ๋ฐ์ํ๋ ์ ๋ฐ์ดํธ๋ ์๋ฆผ ๋ฑ์ ์ค์๊ฐ์ผ๋ก ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ ์ ์์ต๋๋ค. ์ฌ์ฐ๊ฒฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์ฐ๊ฒฐ์ด ๋์ด์ก์ ๋ ์๋์ผ๋ก ์ฐ๊ฒฐํ๊ณ , ๊ธฐ์กด์ ํด๋ง ๋ฐฉ์๊ณผ ๋น๊ตํ์ ๋ ํจ์จ์ ์ด๋ฉฐ, ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ๋ถํ์ํ ํต์ ์ ์ต์ํํฉ๋๋ค.
๋๋
์์๋ ์ค์๊ฐ ์ํ ๊ณต์ ๋ฅผ ์ํด ์ ์ฒญ ์์ฒญ, ์๋ฝ, ๊ฑฐ์ ์๋ฆผ ๊ธฐ๋ฅ์ SSE๋ฅผ ์ฌ์ฉํฉ๋๋ค.
gRPC๋ Google์์ ๊ฐ๋ฐํ ์คํ ์์ค ์๊ฒฉ ํ๋ก์์ ํธ์ถ(RPC) ์์คํ ์ ๋๋ค
๊ฐ Service๋ ์์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ ์ ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , ๋ค๋ฅธ Service๋ ํด๋น ์๋น์ค์ ์์ฒญํฉ๋๋ค.
gRPC๋ Google์์ ๊ฐ๋ฐํ ํ๋กํ ์ฝ ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ฌ ํต์ ํ๋กํ ์ฝ์ ์ ์ํฉ๋๋ค. ํ๋กํ ์ฝ ๋ฒํผ๋ ํจ์จ์ ์ธ ์ด์ง ์ง๋ ฌํ ํฌ๋งท์ผ๋ก ๋ฐ์ดํฐ์ ํจ์จ์ ์ ์ก๊ณผ ์ ์ฅ์ ๋์์ค๋๋ค. ๋ํ ํ๋กํ ์ฝ ๋ฒํผ๋ฅผ ํตํด Server์ ์์์ Client(Stub)๊ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
gRPC๋ ์ฌ๋ฌ ๊ฐ์ง ์ธ์ด๋ฅผ ์ง์ํ๋ฉฐ, ์ด๋ฅผ ํตํด ์๋ก ๋ค๋ฅธ ์ธ์ด๋ก ์์ฑ๋ ์๋น์ค ๊ฐ์๋ ํต์ ์ด ๊ฐ๋ฅํฉ๋๋ค. gRPC๋ ์๋ฐฉํฅ ์คํธ๋ฆฌ๋ฐ์ ์ง์ํ์ฌ ์์ฒญ ์์ด๋ ๋ฐ์ดํฐ ์ ๋ฌ์ด ๊ฐ๋ฅํ๊ณ , ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์คํธ๋ฆผ์ ์ด์ด ๋ค์ค Stub ์คํธ๋ฆฌ๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค.
๋๋
์์๋ ๊ฐ ์๋น์ค ๊ฐ ๋ฐ์ดํฐ ๊ฒฉ๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ๋คํธ์ํฌ ์์์ ํจ์จ์ ์ฌ์ฉ์ ์ํด์ Micro Service ์ฌ์ด ํต์ ์ gRPC๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์์ธ ๊ธฐ์ ์คํ ๋ฐ ๋ฒ์
๊ตฌ๋ถ | ๊ธฐ์ ์คํ | ์์ธ๋ด์ฉ | ๋ฒ์ |
---|---|---|---|
๊ณตํต | ํ์๊ด๋ฆฌ | Gitlab | - |
์ด์๊ด๋ฆฌ | Jira | - | |
์ปค๋ฎค๋์ผ์ด์ | Mattermost, Notion | - | |
BackEnd | DB | MySQL | |
DB | MongoDB | ||
JPA | - | ||
Java | OpenJDK | 17.0.9 | |
Spring | Spring | 5.3.6 | |
Spring Boot | 3.2.1 | ||
IDE | IntelliJ | 23.3.2 | |
Cloud Storage | AWS S3 | - | |
Build | Gradle | 7.3.2 | |
WebRTC | Kurento Media Server | 6.16 | |
WebRTC | Kurento | - | |
gRPC | gRPC | 1.35.0 | |
protobuf | 3.14.0 | ||
protobufPlugin | 0.8.14 | ||
API Docs | Swagger2 | 3.0.0 | |
FrontEnd | HTML5 | - | |
CSS3 | - | ||
JavaScript(ES6) | - | ||
React | React | 18.2.0 | |
React | react-router-dom | 6.21.2 | |
@reduxjs/toolkit | 2.0.1 | ||
react-beautiful-dnd | 13.1.1 | ||
react-calendar | 4.8.0 | ||
react-datepicker | 5.0.0 | ||
tailwindCSS | 3.4.1 | ||
WebSocket | @stomp/stompjs | - | |
WebSocket | stompjs | - | |
WebSocket | sockjs-client | 1.6.1 | |
IDE | Visual Studio Code | 1.85.2 | |
Server | ์๋ฒ | AWS EC2 | - |
๋ฐฐํฌ | Docker | 25.10.1 | |
๋ฐฐํฌ | Jenkins | 2.444 |
Git flow ์ฌ์ฉ์ ์ํด ์ฐ์ํ ํ์ ๋ค์ git flow์ ์ฐธ๊ณ ํ์ต๋๋ค. front ์ back ์ผ๋ก ๋๋์ด faature
์ ํ์ ๋ธ๋์น๋ฅผ ์ฌ์ฉํ์์ผ๋ฉฐ develop
๋ธ๋์น์ develop_frontend
๋ธ๋์น๋ก merge ํ์ฌ ์ฌ์ฉํ์ต๋๋ค.
commit message
๋ feat: ๊ธฐ๋ฅ ๊ตฌํ ๋ด์ฉ
๊ณผ ๊ฐ์ด ํต์ผํ์ฌ ์์ฑํ์ต๋๋ค.
๋งค์ฃผ ์์์ผ ์ค์ ๊ธ์ฃผ์ ์งํ ์ด์๋ฅผ ๋ฐฑ๋ก๊ทธ์ ๋ฑ๋กํ์ต๋๋ค. ์ ์ฃผ์ ์๋ฃํ์ง ๋ชปํ ์ด์๋, ์์ผ๋ก ์งํํ ์ด์๋ค์ ์ถ๊ฐํ์์ต๋๋ค.
- ์ํฝ์ ๊ฐ๋ฐ, ๋ฏธํ , ํ์ต ๋ฑ์ผ๋ก ๊ตฌ์ฑํ์ต๋๋ค.
- ์คํ ๋ฆฌ๋ ๋ช
ํํ ์ ๋ฌ์ ์ํ์ฌ
API ๋ช ์ธ์ ์์ฑ
์ ๊ฐ์ด ์์ฑํ์ต๋๋ค. - ์์
ํํฉ์ ์ง๋ผ์ ๋ฐ์ํจ์ผ๋ก์จ ๊ฐ ํ์์ด ์ด๋ค ์์
์ ํ๊ณ ์๋์ง, ์ผ์ ์ ๋๋ ์ด๊ฐ ์๋์ง ํ ๋์ ํ์ธํ ์ ์์์ต๋๋ค.
depCheck : ์ฐ์ง ์๋ dependency check ํ uninstall ๋ก ์ ์ฒด ํ๋ก์ ํธ ๊ฐ๋ณ๊ฒ ํ๊ธฐ
vite-plugin-compression2 : ์ค์นํ vite.config.js ์ค์ ๋ณ๊ฒฝ
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import compression from 'vite-plugin-compression2';
export default defineConfig({
server: {
host: true,
port: 3000,
},
define: {
global: {},
},
plugins: [
react(),
compression( {
include: [/\.(js)$/, /\.(css)$/],
threshold: 1000,
})
],
});
์ดํ ์์ถ์ด ์ ๋์ง ์์ ํ์ ํ nginx.conf gzip setting์ ์ถ๊ฐํด์ ํด๊ฒฐํด์ค nginx.conf gzip setting: ํ ์คํธ ์์ถ ํ์ฑํ๋ก ์ด๊ธฐ ๋ก๋ฉ text ์ฉ๋์ ์ค์ฌ ์ฑ๋ฅ ํฅ์ nginx.conf gzip : ํ ์คํธ ์์ถ ํ์ฑํ๋ก ์ด๊ธฐ ๋ก๋ฉ text ์ฉ๋์ ์ค์ฌ ์ฑ๋ฅ ํฅ์ event-source ๋ฐ datepicker ์ ์ฌ์ฉ๋๋ babel ๋ฐ polyfill๋ก ์ธํด ์ฑ๋ฅ์ด ์กฐ๊ธ ๋จ์ด์ง
font-display: swap ์ ํตํด ํฐํธ ์ค์ ์ textํ์๋ก ์ฌ์ฉ์ ๊ฒฝํ ํฅ์
์ฌ์ดํธ ๋ฒํผ, ๋ฉ์ธ ์ปจ์
์๊น ๋ณ๊ฒฝ์ผ๋ก ์ฌ์ฉ์ ์ ๊ทผ์ฑ ํฅ์
์ด๊ธฐ ๋๋ฏธ ๋ฐ์ดํฐ๋ก ์ ์ฅ๋ DB ์์ ์ด๋ฏธ์ง์ front์์ ํํํ๋ ๋น์จ์ด ๋ฌ๋ผ ์ ์๊ฐ ์กฐ๊ธ ๋จ์ด์ง
- ์ด๋ฏธ์ง ๋น์จ
- ์๋ณธ ์ด๋ฏธ์ง ๋น์จ๊ณผ ์ค์ ํ ์ด๋ฏธ์ง ๋น์จ์ด ๋ฌ๋ผ์, ์ด๋ฏธ์ง ๋น์จ์ ๋ง์ถ๋๋ก ์ฝ๋๋ฅผ ์์ ํด์ ํด๊ฒฐ
<img
src="/narang_logo.webp"
className="w-11 h-auto hover:cursor-pointer"
onClick={navigateHome}
alt="Home"
/>
- meta ์ค๋ช ์ถ๊ฐ
- ๋ฌธ์์ ๋ฌธ์์ ๋ด์ฉ์ ๊ฐ๋ตํ ์ค๋ช ํ๋ ๋ฉํ๋ฐ์ดํฐ ์ถ๊ฐ
- ๋ช ์์ ์ผ๋ก ๋ฉํ ์ค๋ช ์ ์ถ๊ฐํ๋ ๊ฒ์ด SEO (Search Engine Optimization) ์ธก๋ฉด์์ ์ ๋ฆฌ
<meta name="description" content="๋๋์ ์ปจ์
์ ๋ง์ถ ์ฌํ ๋ํ์ ๋ชจ์งํ๋ ์น์ฌ์ดํธ ์
๋๋ค. ํจ๊ป ๊ณํ์ ์์ ํ๋ฉฐ ์ต๊ณ ์ ์ฌํ์ ๋ง๋ค์ด๋ณด์ธ์." />
<meta name="keywords" content="๋๋, NARANG, ๋ํ ๋ชจ์ง, ์ฌํ ๊ณํ ์์ฑ, ์ฌํ ์ ๋ณด" />
- robots.txt ํ์ผ ์ถ๊ฐ
- ํ๋ก์ ํธ์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ robots.txtํ์ผ์ ์ถ๊ฐํจ์ผ๋ก์จ ์น ํฌ๋กค๋ฌ์๊ฒ ์น ์ฌ์ดํธ์ ์ด๋ค ๋ถ๋ถ์ ํฌ๋กค๋งํ ์ ์๊ณ ์ด๋ค ๋ถ๋ถ์ ์ ๊ทผํ ์ ์๋์ง ์๋ ค์ฃผ๋๋ก ํจ
FCP
1.5์ด -> 0.7์ด๋ก ์ฝ 53%ํฅ์
LCP
2.5์ด -> 1.6์ด๋ก ์ฝ 36%ํฅ์
Total Blocking Time(TBT)
80ms -> 40ms ๋ก 50%๋ก ์๊ฐ ๋จ์ถ
Speed Index
1.9s -> 1.4s ๋ก ์ฝ 26%ํฅ์