Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

677 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

RECIPIA_MEMBER

แ„…แ…ฆแ„‰แ…ตแ„‘แ…ตแ„‹แ…ก_แ„‹แ…ตแ†ซแ„แ…ณแ„…แ…ฉ

๋ชฉ์ฐจ

  1. ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ
  2. ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„
  3. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ
  4. ์ฃผ์š” ๊ธฐ๋Šฅ
  5. ์ธํ”„๋ผ
  6. ERD
  7. ์•„ํ‚คํ…์ฒ˜
  8. ๊ฐœ๋ฐœ ์ „๋žต
  9. ์ฃผ์š” ๊ธฐ๋Šฅ ์ƒ์„ธ ์„ค๋ช…
  10. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ
  11. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ

๐Ÿ”ธ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

  • ๋ ˆ์‹œํ”ผ์•„๋Š” ๋ ˆ์‹œํ”ผ๋ฅผ ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ ์ž‘์„ฑํ•˜๊ณ  ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” SNS์ž…๋‹ˆ๋‹ค.
  • ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ์ฐพ๊ณ ์‹ถ์€ ๋ ˆ์‹œํ”ผ ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๊ตฌ๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค์–‘ํ•œ ํšŒ์›์„ ํŒ”๋กœ์šฐํ•˜๋ฉฐ ๋งˆ์Œ์— ๋“œ๋Š” ๋ ˆ์‹œํ”ผ์— ๋Œ“๊ธ€์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ณ , ์ข‹์•„์š”, ๋ถ๋งˆํฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฉค๋ฒ„ ์„œ๋ฒ„๋Š” ๊ทธ์ค‘ ํšŒ์› ๊ด€๋ จ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ธ ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„

  • 2023.05 ~ 2023.02 (๋ฒ ํƒ€๋ฒ„์ „ ์ถœ์‹œ)
  • ๊ณ„์†ํ•ด์„œ ์ถ”๊ฐ€๊ฐœ๋ฐœ์„ ์ง„ํ–‰์ค‘์ž…๋‹ˆ๋‹ค.

๐Ÿ”ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

  • Java 17
  • Spring Boot 3.1.2, Spring Security6
  • IDE: Intellij, Datagrip
  • Database: RDS(PostgreSQL), Redis
  • ORM: JPA
  • ํ˜‘์—… ํˆด: Jira, Confluence, Notion, Slack

๐Ÿ”ธ ์ฃผ์š” ๊ธฐ๋Šฅ

๊น€์ด์ค€, ์ตœ์ง„์•ˆ (ํŽ˜์–ด)

  1. ๋กœ๊ทธ์ธ (Spring Security, JWT)
  2. Access Token ์žฌ๋ฐœํ–‰
  3. ํšŒ์›๊ฐ€์ž… (ํœด๋Œ€ํฐ ๋ฒˆํ˜ธ/์ด๋ฉ”์ผ/๋‹‰๋„ค์ž„ ์ค‘๋ณต์ฒดํฌ, S3 ์ด๋ฏธ์ง€ ์ €์žฅ, SNS)

๊น€์ด์ค€

  1. ๋กœ๊ทธ์•„์›ƒ
  2. ์ด๋ฉ”์ผ ์ฐพ๊ธฐ
  3. ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ • (Java Mail Sender๋กœ ๋ฉ”์ผ ์ „์†ก)
  4. ํšŒ์› ํƒˆํ‡ด(SNS)
  5. ๋งˆ์ดํŽ˜์ด์ง€ ์กฐํšŒ/์ˆ˜์ •(SNS)
  6. ํŒ”๋กœ์šฐ ์š”์ฒญ(SNS)/ํŒ”๋กœ์šฐ ์ทจ์†Œ
  7. ํŒ”๋กœ์šฐ/ํŒ”๋กœ์ž‰ ๋ชฉ๋ก ์กฐํšŒ
  8. ํšŒ์› ์‹ ๊ณ 
  9. ๋น„๋ฐ€๋ฒˆํ˜ธ ์ˆ˜์ •
  10. ๋ฌธ์˜์‚ฌํ•ญ ๋“ฑ๋ก/์กฐํšŒ

๐Ÿ”ธ ์ธํ”„๋ผ

MSA ์ธํ”„๋ผ ๊ตฌ์„ฑ

  • ํ”„๋กœ์ ํŠธ๋Š” MSA๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์œผ๋ฉฐ ์ด ์„ธ๊ฐœ(๋ฉค๋ฒ„, ๋ ˆ์‹œํ”ผ, ์ง€ํ”„ํ‚จ)์˜ ์„œ๋น„์Šค๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ ์ค‘ ๋ฉค๋ฒ„์„œ๋ฒ„ ECS ํด๋Ÿฌ์Šคํ„ฐ์— MEMBER ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” RDS(PostgreSQL), Redis, S3๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฒคํŠธ ๋“œ๋ฆฌ๋ธ, ๋ฉ”์‹œ์ง€ ๋“œ๋ฆฌ๋ธ์œผ๋กœ๋Š” SNS, SQS๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-02-10 แ„‹แ…ฉแ„’แ…ฎ 3 49 57

ECS ๊ตฌ์„ฑ

  • ECS ์ธํ”„๋ผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ECR์— ์ €์žฅ๋œ ์Šคํ”„๋ง๋ถ€ํŠธ ์ด๋ฏธ์ง€๋ฅผ ๋ฐ›์•„์„œ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋™์ž‘์‹œํ‚ต๋‹ˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ECS์—๋Š” ํ•˜๋‚˜์˜ ์„œ๋น„์Šค, ํ•˜๋‚˜์˜ ํƒœ์Šคํฌ ์ •์˜๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • SpringBoot์—๋Š” Zipkin์„œ๋ฒ„๋กœ ๋กœ๊ทธ๋ฅผ ์ „์†กํ•˜๋„๋ก ์„ค๊ณ„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

image (1)

CI/CD ์„ค๊ณ„

  • CI/CD๋Š” AWS์˜ CodePipeline์œผ๋กœ ๊ตฌ์ถ•ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • main ๋ธŒ๋žœ์น˜์— merge ๋ฐœ์ƒ ์‹œ AWS CodePipeline์ด ์ž๋™์œผ๋กœ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ GitHub ์›นํ›…์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง€๋ฉฐ, GitHub์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ์ง€ํ•˜์—ฌ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
  • CodeBuild๋ฅผ ์‚ฌ์šฉํ•ด Docker ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ECR์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ Docker ์ด๋ฏธ์ง€๋กœ ๋นŒ๋“œํ•˜๊ณ , ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€๋ฅผ ECR์— ์•ˆ์ „ํ•˜๊ฒŒ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  • CodePipeline์ด ECR์— ์ €์žฅ๋œ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ์ง€ํ•˜๊ณ , ECS์— ๋กค๋ง ์—…๋ฐ์ดํŠธ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋กค๋ง ์—…๋ฐ์ดํŠธ๋ฅผ ํ†ตํ•ด ์ƒˆ ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ ์ง„์ ์œผ๋กœ ๋ฐฐํฌํ•˜๋ฉด์„œ ์„œ๋น„์Šค ์ค‘๋‹จ ์—†์ด ์—…๋ฐ์ดํŠธ๋ฅผ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

๐Ÿ”ธ ERD

AQuery๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉค๋ฒ„ ์„œ๋ฒ„์˜ ERD๋ฅผ ์„ค๊ณ„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

image

๐Ÿ”ธ ์•„ํ‚คํ…์ฒ˜

ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜ ๋„์ž…

image (5)

MSA ํ™˜๊ฒฝ์—์„œ DB ์ •ํ•ฉ์„ฑ ๋ณด์žฅ ๊ณผ์ •

  • ์œ ์ €๊ฐ€ ๋‹‰๋„ค์ž„์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฉค๋ฒ„ ์„œ๋ฒ„์—์„œ๋Š” ๋‹‰๋„ค์ž„ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฉค๋ฒ„ DB์— ๋ฐ˜์˜ํ•˜๊ณ  Spring Event๋ฅผ ๋ฐœํ–‰ํ•ฉ๋‹ˆ๋‹ค. (์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋Š” 2๊ฐœ๋ฅผ ์„ ์–ธ)
  • ์Šคํ”„๋ง ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์ค‘ 1๊ฐœ๊ฐ€ ๋™์ž‘ํ•˜์—ฌ ๋ฉค๋ฒ„ DB์˜ Outbox ํ…Œ์ด๋ธ”์— ์ด๋ฒคํŠธ ๋ฐœํ–‰ ์—ฌ๋ถ€๋ฅผ ๊ธฐ๋กํ•˜๊ณ  DB ์ปค๋ฐ‹์„ ํ•ฉ๋‹ˆ๋‹ค.(ํŠธ๋žœ์žญ์…˜ ์ปค๋ฐ‹์™„๋ฃŒ)
  • ํŠธ๋žœ์žญ์…˜ ์ปค๋ฐ‹์ด ์™„๋ฃŒ๋˜๋ฉด AFTER_COMMIT์„ ์ ์–ด์ค€ ๋˜๋‹ค๋ฅธ ์Šคํ”„๋ง ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ๋™์ž‘ํ•˜์—ฌ ๋‹‰๋„ค์ž„ ๋ณ€๊ฒฝ ํ† ํ”ฝ์œผ๋กœ SNS๏ฟฝ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • SNS ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐœํ–‰๋˜๋ฉด 2๊ฐœ์˜ SQS๋ฆฌ์Šค๋„ˆ๊ฐ€ ๋™์‹œ์— ๋™์ž‘ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    • ๋ ˆ์‹œํ”ผ ์„œ๋ฒ„์—์„œ ๋‹‰๋„ค์ž„ ๋ณ€๊ฒฝ ํ† ํ”ฝ์„ ๋ฆฌ์Šค๋‹ํ•˜๊ณ ์žˆ๋˜ SQS๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
    • ๋ฉค๋ฒ„ ์„œ๋ฒ„์—์„œ ๋‹‰๋„ค์ž„ ๋ณ€๊ฒฝ ํ† ํ”ฝ์„ ๋ฆฌ์Šค๋‹ํ•˜๊ณ  ์žˆ๋˜ SQS๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ Outbox ํ…Œ์ด๋ธ”์— ์ด๋ฒคํŠธ ๋ฐœํ–‰ ์—ฌ๋ถ€(published ์ปฌ๋Ÿผ)๋ฅผ true๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  • ๋ ˆ์‹œํ”ผ ์„œ๋ฒ„์˜ SQS ๋ฆฌ์Šค๋„ˆ๊ฐ€ ๋™์ž‘ํ• ๋•Œ FeignClient๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉค๋ฒ„ ์„œ๋ฒ„์— ๊ฐ€์žฅ ์ตœ์‹ ์˜ ์œ ์ € ๋‹‰๋„ค์ž„ ์ •๋ณด๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉค๋ฒ„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜จ ๊ฐ€์žฅ ์ตœ์‹ ์˜ ์œ ์ € ๋‹‰๋„ค์ž„ ์ •๋ณด๋ฅผ ๋ ˆ์‹œํ”ผDB์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.
spring-event

ZERO-PAYLOAD ์ •์ฑ…

  • ๋ฐ์ดํ„ฐ ์ „์†ก์‹œ ๋ฉ”์‹œ์ง€ ๋‚ด๋ถ€์—๋Š” memberId๋งŒ์„ ํฌํ•จํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ถ„์‚ฐ์ถ”์ ์„ ์œ„ํ•œ traceId๋Š” SNS์˜ messageAttributes๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
zero-payload

๋ฏธ๋ฐœํ–‰๋œ SNS ๋ฉ”์‹œ์ง€ ์žฌ๋ฐœํ–‰

  • Spring Batch๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 5๋ถ„๋งˆ๋‹ค ๋ฏธ๋ฐœํ–‰๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์žฌ๋ฐœํ–‰ ํ•ฉ๋‹ˆ๋‹ค.
  • Outbox ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ๋ฐœํ–‰์—ฌ๋ถ€(published)๊ฐ€ false๊ฒƒ์„ ์กฐํšŒํ•˜์—ฌ ๋ฐฐ์น˜๊ฐ€ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
batch-event

๐Ÿ”ธ ๊ฐœ๋ฐœ ์ „๋žต

1. ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์™€ JWT๋ฅผ ํ†ตํ•œ ์ธ์ฆ ๋ฐ ์ธ๊ฐ€

image

2. ์—๋Ÿฌ ์ค‘์•™ ์ฒ˜๋ฆฌ

  • ์ด ํ”„๋กœ์ ํŠธ์˜ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ์ „๋žต์€ @RestControllerAdvice๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ชจ๋“  ์˜ˆ์™ธ๋ฅผ ์ค‘์•™์—์„œ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด, ์ปค์Šคํ…€์œผ๋กœ ์ •์˜๋œ ErrorCode ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—๋Ÿฌ ์ฝ”๋“œ ๋ฐ ๋ฉ”์‹œ์ง€ ๊ด€๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

image (6)

๐Ÿ”ธ ์ฃผ์š” ๊ธฐ๋Šฅ ์ƒ์„ธ ์„ค๋ช…

1๏ธ. ๋กœ๊ทธ์ธ

image

2. Access Token, Refresh Token ๋ฐœํ–‰

image

3. Access Token ์žฌ๋ฐœํ–‰

image

4. ํšŒ์›๊ฐ€์ž…

image

5. ์ž„์‹œ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ฐœ๊ธ‰

image

๐Ÿ”ธ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ

  • ๋‹จ์œ„/ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ง„ํ–‰ (171๊ฐœ)
  • Junit5, mockito, S3Mock, BddMockito ์‚ฌ์šฉ
  • ์™ธ๋ถ€ DB (Redis)๋ฅผ ์‚ฌ์šฉํ•œ ํ…Œ์ŠคํŠธ๋„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
image

๐Ÿ”ธ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ

  • ์ƒ์šฉ ์„œ๋ฒ„ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ
image (3)
  • ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ์˜ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ๋ถ„์„
image
  • ํ•˜๋“œ์›จ์–ด ์„ฑ๋Šฅ์˜ ์˜ํ–ฅ: ๋กœ์ปฌ M2 Max 64GB ํ™˜๊ฒฝ์—์„œ์˜ ์„ฑ๋Šฅ์ด M1 16GB ํ™˜๊ฒฝ๋ณด๋‹ค ์›”๋“ฑํžˆ ๋†’๋‹ค. ์ด๋Š” M2 Max์˜ ๋” ๋†’์€ CPU ์„ฑ๋Šฅ๊ณผ ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์ด ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๊ธฐ์—ฌํ–ˆ์Œ์„ ์‹œ์‚ฌํ•œ๋‹ค. TPS(Transactions Per Second) ํ‰๊ท ๊ณผ ์ตœ๊ณ ์น˜ ๋ชจ๋‘์—์„œ M2 Max ํ™˜๊ฒฝ์ด M1 ํ™˜๊ฒฝ์„ ํฌ๊ฒŒ ์•ž์„œ๋ฉฐ, ํ‰๊ท  ํ…Œ์ŠคํŠธ ์‹œ๊ฐ„๋„ ์ƒ๋‹นํžˆ ๋‹จ์ถ•๋œ๋‹ค.

  • ์ƒ์šฉ ํ™˜๊ฒฝ์—์„œ์˜ ์„ฑ๋Šฅ ์ œ์•ฝ: EC2 t4g.small ํ™˜๊ฒฝ์—์„œ์˜ ์„ฑ๋Šฅ์€ ๋กœ์ปฌ ํ™˜๊ฒฝ๊ณผ ๋น„๊ตํ•˜์—ฌ ํ˜„์ €ํžˆ ๋‚ฎ๋‹ค. TPS ํ‰๊ท ๊ณผ ์ตœ๊ณ ์น˜๊ฐ€ ๋งค์šฐ ๋‚ฎ๊ณ , ํ‰๊ท  ํ…Œ์ŠคํŠธ ์‹œ๊ฐ„์ด ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•œ๋‹ค. ์ด๋Š” EC2 t4g.small ์ธ์Šคํ„ด์Šค์˜ ๋ฆฌ์†Œ์Šค ์ œ์•ฝ๊ณผ ๋„คํŠธ์›Œํฌ ์ง€์—ฐ ์‹œ๊ฐ„ ๋“ฑ ์™ธ๋ถ€ ์š”์ธ ๋•Œ๋ฌธ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

  • ์„ฑ๊ณตํ•œ ํ…Œ์ŠคํŠธ ๋น„์œจ: ๋ชจ๋“  ํ™˜๊ฒฝ์—์„œ ์—๋Ÿฌ ์—†์ด ์„ฑ๊ณตํ•œ ํ…Œ์ŠคํŠธ์˜ ๋น„์œจ์ด 100%๋กœ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์•ˆ์ •์„ฑ์€ ํ™˜๊ฒฝ์— ๊ด€๊ณ„์—†์ด ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€๋˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  • ์„ฑ๋Šฅ ์ตœ์ ํ™”์˜ ์ค‘์š”์„ฑ: ํŠนํžˆ ์ƒ์šฉ ํ™˜๊ฒฝ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•  ๋•Œ, ํ•˜๋“œ์›จ์–ด ์„ฑ๋Šฅ, ๋„คํŠธ์›Œํฌ ์„ค์ •, JVM ์ตœ์ ํ™” ๋“ฑ ๋‹ค์–‘ํ•œ ์š”์†Œ๋“ค์„ ๊ณ ๋ คํ•˜์—ฌ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

(๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.)

About

๐Ÿ‘จโ€๐Ÿณ ๋ฉค๋ฒ„ BE ์„œ๋ฒ„

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages