Skip to content

Samuel-Jeong/portfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

19 Commits
ย 
ย 

Repository files navigation

[ ํฌํŠธํด๋ฆฌ์˜ค ]

๐Ÿ”ฅ ์†Œ๊ฐœ

JAVA ๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ API ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
CI-CD ์—๋„ ๊ด€์‹ฌ์ด ๋งŽ์€ DevOps + ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.

๐Ÿ“ ๊ธฐ์ˆ 

1) ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
  - Java (8, 11, 17)
    > Spring boot + Data JPA (+querydsl), MyBatis
  - Shell script

2) ๋ฐฐํฌ ํ™˜๊ฒฝ
  - Linux
    - Centos7
    - Redhat7
    - Ubuntu

3) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  - RDBMS
    - MySQL
    - MariaDB
    - SQLITE
  - NO-SQL
    - REDIS

4) ๋ฉ”์„ธ์ง€ ๋ฏธ๋“ค์›จ์–ด
  - Apache kafka
  - RabbitMQ
  
5) CI/CD
  - Jenkins
  - GIT
  - Docker(+compose)

6) Cloud
  - AWS
  - Azure
  - NCP

7) IDE
  - Intellij IDEA
  - VIM

๐Ÿ“ ํ”„๋กœ์ ํŠธ

1) SKB ๋…น์ทจ ์„œ๋ฒ„ ๊ฐœ๋ฐœ

1. ๊ฐœ์š”
- ์ด๋™ ํ†ต์‹  ํ†ตํ™” ์„œ๋น„์Šค ์ค‘์— ์„œ๋น„์Šค ์‚ฌ์šฉ์ž(๋ฐœ์‹ , ์ฐฉ์‹ )์˜ ์Œ์„ฑ์„ ๋…น์ทจํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ์ ํŠธ
- ํ†ตํ™” ๊ฐœ์‹œ ์„œ๋น„์Šค ์ œ๊ณต ์„œ๋ฒ„(SIP stack), ์ฆ‰ ์‹œ๊ทธ๋„ ์ฒ˜๋ฆฌ ์„œ๋ฒ„์™€ ์Œ์„ฑ ํŠธ๋ ํฌ(RTP trunk) ๋ฆด๋ ˆ์ด ์„œ๋น„์Šค ์ œ๊ณต ์„œ๋ฒ„, ์ฆ‰ ๋ฏธ๋””์–ด ์ฒ˜๋ฆฌ ์„œ๋ฒ„๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ํ†ตํ™” ์„œ๋น„์Šค ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ

2. ๊ธฐ๊ฐ„
- 2020.08~2021.10(1๋…„ 3๊ฐœ์›”)

3. ๊ธฐ์ˆ  ๋ฐ ๋‹ด๋‹น ํŒŒํŠธ
- ๊ฐœ๋ฐœ ์–ธ์–ด : JAVA (JDK 8)
- ํŒจํ‚ค์ง€ ๋ฐฐํฌ ํ™˜๊ฒฝ : Linux (Centos7)
- ๊ฐœ๋ฐœ ์ธ์› : ์‹œ๊ทธ๋„ ์„œ๋ฒ„ - 2๋ช… / ๋ฏธ๋””์–ด ์„œ๋ฒ„ โ€“ 1๋ช…
- ๋‹ด๋‹น ํŒŒํŠธ ๋ฐ ๊ฐœ๋ฐœ ๋‚ด์šฉ
    > ๋ฏธ๋””์–ด ์„œ๋ฒ„ : ์„œ๋ฒ„์™€ ์—ฐ๋™ํ•˜๊ธฐ ์œ„ํ•œ API ๊ทœ๊ฒฉ๊ณผ ์Œ์„ฑ ํŠธ๋ ํฌ๋ฅผ ๋ฆด๋ ˆ์ดํ•˜๊ธฐ ์œ„ํ•œ UDP(L4) ๋‹จ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊นŒ์ง€ ์ง„ํ–‰
    > ์˜คํ”ˆ์†Œ์Šค API : ๋ฉ”์„ธ์ง€ ๋ฏธ๋“ค์›จ์–ด๋กœ๋Š” RabbitMQ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ json ํฌ๋งท์œผ๋กœ ์—ฐ๋™
    > ๋„คํŠธ์›Œํฌ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ๋Š” Netty ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ณ , ๊ธฐ๋ณธ์ ์ธ ํŒŒ์ผ ์ฒ˜๋ฆฌ(์“ฐ๊ธฐ, ์ฝ๊ธฐ) ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ฐœ๋ฐœ

4. ์„ฑ๊ณผ ๋ฐ ์„ฑ์žฅ ํฌ์ธํŠธ
- ์‹œ๊ทธ๋„ ์„œ๋ฒ„ ๊ฐœ๋ฐœ ์ธ์›๋“ค๊ณผ ๊ฐ™์ด ์˜๋…ผํ•จ์œผ๋กœ์จ ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€, ๋ณด๋‹ค ์œ ์—ฐํ•œ ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ์œ„ํ•œ API ๋ฅผ ์ œ๊ณต ๋ฐ ๊ณ ๊ฐ(SKB) ์š”๊ตฌ์‚ฌํ•ญ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋˜์–ด ํŒ€์›Œํฌ์˜ ์ค‘์š”์„ฑ๊ณผ ์œ ์—ฐํ•˜๊ณ  ๊ฐœ๋ฐฉ๋œ ์ž์„ธ๋กœ ๊ฐœ๋ฐœ์— ์ž„ํ•˜๊ฒŒ ๋˜๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋จ.
- ๋ฉ”์„ธ์ง• ๋ฏธ๋“ค์›จ์–ด(RabbitMQ)๋ฅผ ํ†ตํ•œ API ์—ฐ๋™ ๋ฐ ์‹ค์ œ ๋ฏธ๋””์–ด ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ• ๊ฐœ๋ฐœ ์—ญ๋Ÿ‰ ์Šต๋“
- ์ž๋ฐ”์˜ Netty ๋„คํŠธ์›Œํฌ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ†ตํ•œ ํšจ์œจ์ ์ธ ๋„คํŠธ์›Œํฌ ๊ฐœ๋ฐœ ์—ญ๋Ÿ‰ ์Šต๋“
- JAVA API ๊ฐœ๋ฐœ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”

(์„œ๋น„์Šค๋ช… : SKB ์‹ฌํ”Œ๋ ˆ์ฝ”๋”ฉ
https://biz.skbroadband.com/page.do?menu_id=P01030300)

2) SKT ๋ณด์ด์Šค๋ทฐ ๋ˆ„๊ตฌ์ฝœ ๋ฏธ๋””์–ด ์„œ๋ฒ„ ๊ฐœ๋ฐœ

1. ๊ฐœ์š”
- ๊ณ ๊ฐ๊ณผ AI, AI ์ค‘๊ณ„๋ฅผ ํ†ตํ•œ ๊ณ ๊ฐ๊ณผ ์ƒ๋‹ด์‚ฌ ๊ฐ„์˜ ๋ฏธ๋””์–ด ๋ฆด๋ ˆ์ด ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ์ ํŠธ

2. ๊ธฐ๊ฐ„
- 2021.03~2022.03(1๋…„ 1๊ฐœ์›”)

3. ๊ธฐ์ˆ  ๋ฐ ๋‹ด๋‹น ํŒŒํŠธ
- ๊ฐœ๋ฐœ ์–ธ์–ด : JAVA (JDK 8)
- ํŒจํ‚ค์ง€ ๋ฐฐํฌ ํ™˜๊ฒฝ : Linux (Centos7)
- ๊ฐœ๋ฐœ ์ธ์› : ์‹œ๊ทธ๋„ ์„œ๋ฒ„ - 2๋ช… / ๋ฏธ๋””์–ด ์„œ๋ฒ„ โ€“ 1๋ช…
- ๋‹ด๋‹น ํŒŒํŠธ ๋ฐ ๊ฐœ๋ฐœ ๋‚ด์šฉ
    > ๋ฏธ๋””์–ด ์„œ๋ฒ„ : ์Œ์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฏธ๋””์–ด ์—”์ง„(์™ธ๋ถ€ ์—…์ฒด ์‚ฌ์šฉ)๊ณผ API ์—ฐ๋™์„ ํ†ตํ•ด ๋ฏธ๋””์–ด ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋„๋ก ๊ฐœ๋ฐœ
    > ์‹œ๊ทธ๋„ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ํ†ตํ™”๊ฐ€ ์‹œ์ž‘๋˜๋ฉด ๋ฏธ๋””์–ด ์„œ๋ฒ„๋กœ ์„ธ์…˜ ์ •๋ณด๋ฅผ ๋‚ด๋ ค์ฃผ๊ฒŒ ๋˜์–ด ๋ฐœ์‹ ์ž์™€ ์ฐฉ์‹ ์ž์˜ ์Œ์„ฑ์ด ๋ฏธ๋””์–ด ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด AI ์„œ๋ฒ„๋กœ ์—ฐ๋™๋˜์–ด์„œ STT, TTS ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ(API) ๊ฐœ๋ฐœ
    > ์˜คํ”ˆ์†Œ์Šค API : ๋ฉ”์„ธ์ง• ๋ฏธ๋“ค์›จ์–ด๋กœ๋Š” RabbitMQ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ json ํฌ๋งท์œผ๋กœ ์—ฐ๋™

4. ์„ฑ๊ณผ ๋ฐ ์„ฑ์žฅ ํฌ์ธํŠธ
- ์ฒ˜์Œ ๊ฐœ๋ฐœํ•œ ๋ฏธ๋””์–ด ์„œ๋ฒ„ ๊ฐœ๋ฐœ ๋•Œ๋Š” ๋‚ด๋ถ€ ํŒ€๋ผ๋ฆฌ๋งŒ ํ˜‘์˜ํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜์˜€์ง€๋งŒ, ์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์™ธ๋ถ€ ์—…์ฒด์™€๋„ ์ง์ ‘ ์ปจํƒํ•˜์—ฌ ํšŒ์˜ํ•˜๋Š” API ๊ฐœ๋ฐœ
- ์ฒซ ์™ธ๋ถ€ ์—…์ฒด ์ปจํƒ์ด๋ผ ์˜๊ฒฌ ์กฐ์œจ์ด ๋งŽ์ด ์–ด๋ ค์› ์ง€๋งŒ ์˜ค๋žœ ๊ธฐ๊ฐ„ ๋™์•ˆ์˜ ํ˜‘์—…์„ ํ†ตํ•ด ๋ณด๋‹ค ์ต์ˆ™ํ•œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”
- JAVA API ๊ฐœ๋ฐœ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”

(ํ”„๋กœ์ ํŠธ ๊ด€๋ จ ๊ธฐ์‚ฌ
URL: https://www.hankyung.com/society/article/202207184325Y)

3) ๊ฐ€์ƒ ๊ณต์—ฐ ํ”Œ๋žซํผ ๋ฏธ๋””์–ด ์„œ๋ฒ„ ๊ฐœ๋ฐœ

1. ๊ฐœ์š”
- ๋ฉ”ํƒ€๋ฒ„์Šค(metaverse)๋ฅผ ํ†ตํ•œ ๊ณต์—ฐ์ž์˜ ๊ฐ€์ƒ ๊ณต์—ฐ์„ ์ŠคํŠธ๋ฆฌ๋ฐํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ํ”„๋กœ์ ํŠธ
- ๊ณต์—ฐ์ž๊ฐ€ ์ž์‹ ์˜ ๊ณต์—ฐ์žฅ์„ ๊ฐ€์ƒ ๊ณต๊ฐ„์„ ํ†ตํ•ด ๊พธ๋ฉฐ์„œ ์›ํ•˜๋Š” ์ŠคํŠธ๋ฆผ๊ณผ ํ•จ๊ป˜ ๊ณต์—ฐ ์„œ๋ฒ„๋กœ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ๋“ฑ๋กํ•˜๋ฉด ์ฐธ์—ฌ์ž๊ฐ€ ํ•ด๋‹น ๊ณต์—ฐ์ž์˜ ๊ณต์—ฐ์žฅ์— ์ฐธ์—ฌํ•˜๋Š” ๋ฏธ๋””์–ด ์„œ๋น„์Šค

2. ๊ธฐ๊ฐ„
- 2021.10~2022.12(1๋…„ 2๊ฐœ์›”)

3. ๊ธฐ์ˆ  ๋ฐ ๋‹ด๋‹น ํŒŒํŠธ
- ๊ฐœ๋ฐœ ์–ธ์–ด : JAVA (JDK 11)
- ํŒจํ‚ค์ง€ ๋ฐฐํฌ ํ™˜๊ฒฝ : Linux (Centos7)
- ๊ฐœ๋ฐœ ์ธ์› : ์„ธ์…˜ ๊ด€๋ฆฌ ์„œ๋ฒ„(์›น API ์™€ ์—ฐ๋™) - 2๋ช… / ๋ฏธ๋””์–ด ์„œ๋ฒ„ โ€“ 1๋ช…
- ๋‹ด๋‹น ํŒŒํŠธ ๋ฐ ๊ฐœ๋ฐœ ๋‚ด์šฉ
    > ๋ฏธ๋””์–ด ์„œ๋ฒ„ : ์›น API ๋ฅผ ํ†ตํ•œ ์„ธ์…˜ ๊ด€๋ฆฌ ์ •๋ณด๋“ค์„ ์„ธ์…˜ ์„œ๋ฒ„์—์„œ ์ „๋‹ฌ ๋ฐ›๊ฒŒ ๋˜๋ฉด ๊ณต์—ฐ์ž์˜ ์ŠคํŠธ๋ฆผ์„ ์ €์žฅํ•˜์—ฌ ์ฐธ์—ฌ์ž๊ฐ€ ์ฐธ์—ฌํ•˜์ž๋งˆ์ž ์ตœ๋Œ€ํ•œ ์ ์€ latency ๋ฅผ ํ†ตํ•ด ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์ œ๊ณตํ•˜๋„๋ก ๊ฐœ๋ฐœ
    > ๊ณต์—ฐ์ž์˜ ์ŠคํŠธ๋ฆผ์€ RTMP ์ŠคํŠธ๋ฆผ์œผ๋กœ ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์„ ๋ฐ›์„ RTMP ์„œ๋ฒ„, ์ฐธ์—ฌ์ž๊ฐ€ ์›น API ์š”์ฒญ์„ ํ†ตํ•ด ๊ณง๋ฐ”๋กœ ์ŠคํŠธ๋ฆผ์„ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” MPEG-DASH ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœ
    > ์˜คํ”ˆ์†Œ์Šค API : ์‹ค์‹œ๊ฐ„ ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์ ์€ ์ง€์—ฐ์œจ์„ ํ†ตํ•ด ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์„ธ์ง€ ๋ฏธ๋“ค์›จ์–ด๋Š” Kafka ๋ฅผ ์‚ฌ์šฉ, RabbitMQ ์™€ ๋ณ‘ํ–‰ํ•˜์—ฌ ์‚ฌ์šฉ

4. ์„ฑ๊ณผ ๋ฐ ์„ฑ์žฅ ํฌ์ธํŠธ
- ์ด์ „์— ์ˆ˜ํ–‰ํ•œ ๋‘ ๊ฐœ์˜ JAVA ํ”„๋กœ์ ํŠธ์—์„œ๋Š” API ์—ฐ๋™๊ณผ ์Œ์„ฑ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋งŒ ๊ฐœ๋ฐœํ•˜์˜€์ง€๋งŒ, ์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํ•ด๋‹น ์‚ฌํ•ญ์„ ํฌํ•จํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์˜์ƒ ๋ฐ์ดํ„ฐ๋„ ์ฒ˜๋ฆฌํ•ด์•ผํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณด๋‹ค ๋†’์€ ์ˆ˜์ค€์˜ ๋ฏธ๋””์–ด ์„œ๋ฒ„ ๊ฐœ๋ฐœ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”
- ์™ธ๋ถ€ ์›น ๋ธŒ๋ผ์šฐ์ € API ์—ฐ๋™ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‚ด๋ถ€ ์„ธ์…˜ ์„œ๋ฒ„์™€์˜ API ์—ฐ๋™ ๊ฐœ๋ฐœ๋„ ํ•„์š”ํ•˜์˜€๊ณ , RTMP handshake, DASH ์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” HTTP API ์—ฐ๋™ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜์—ฌ JAVA ๋ฐฑ์—”๋“œ API ๊ฐœ๋ฐœ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”
- ์„ธ์…˜๊ณผ ๋ฏธ๋””์–ด ๋ฐ์ดํ„ฐ ์‹ฑํฌ๊ฐ€ ์•„์ฃผ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒํƒœ(state)๋ฅผ ๊ฐ€์ง€๋„๋ก ๊ฐœ๋ฐœํ•˜์—ฌ  FSM(Finite State Machine) ๊ฐœ๋ฐœ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”
- ์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค๋ฅผ ์œ„ํ•ด ๋‚ฎ์€ ์ง€์—ฐ์œจ ํ™•๋ณด๋ฅผ ์œ„ํ•œ ์„œ๋ฒ„ ์„ฑ๋Šฅ๊ณผ JVM ์„ฑ๋Šฅ ํŠœ๋‹ ๊ธฐ์ˆ  ๋ฐ JProfiler ๋„๊ตฌ๋ฅผ ํ†ตํ•ด์„œ ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค(ํž™ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ cpu ์ ์œ ์œจ ๋“ฑ)์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ์—ญ๋Ÿ‰ ๊ฐ•ํ™”

4) WebRtc to RTSP Gateway ์„œ๋ฒ„ ๊ฐœ๋ฐœ (๊ฐ์„ฑ ์ธ์ง€ ๋ฏธ๋””์–ด ๋ฆด๋ ˆ์ด ์„œ๋ฒ„)

1. ๊ฐœ์š”
- ํ•™์ƒ๊ณผ ๊ต์‚ฌ๊ฐ€ ์›๊ฒฉ์œผ๋กœ ์ˆ˜์—…ํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋žซํผ์—์„œ ๊ต์‚ฌ๊ฐ€ ์†ก์ถœํ•˜๋Š” ์†Œ์Šค ๋ฏธ๋””์–ด ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ์ค‘๊ฐ„์—์„œ ๋ฏธ๋””์–ด๋ฅผ ํ•™์ƒ๋“ค์—๊ฒŒ ๋ฆด๋ ˆ์ดํ•˜๋Š” ์„œ๋ฒ„

2. ๊ธฐ๊ฐ„
- 2022.09~2022.11(3๊ฐœ์›”)

3. ๊ธฐ์ˆ  ๋ฐ ๋‹ด๋‹น ํŒŒํŠธ
- ๊ฐœ๋ฐœ ์–ธ์–ด : JAVA (JDK 11)
- ํŒจํ‚ค์ง€ ๋ฐฐํฌ ํ™˜๊ฒฝ : Linux (Centos7)
- ๋‹ด๋‹น ํŒŒํŠธ ๋ฐ ๊ฐœ๋ฐœ ๋‚ด์šฉ : ์†Œ์Šค ๋ฏธ๋””์–ด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์•ž๋‹จ ์„œ๋น„์Šค๋Š” ๋‹ค๋ฅธ ํŒ€์›๋“ค์ด ์ œ์ž‘ํ•˜๊ณ , ๋ฏธ๋””์–ด๋ฅผ ๋ฉ€ํ‹ฐ์บ์ŠคํŒ…์œผ๋กœ ์ „๋‹ฌํ•ด์ฃผ๋Š” ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœ
    > ์†Œ์Šค ๋ฏธ๋””์–ด ์„œ๋ฒ„๋Š” WebRTC ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•˜์—ฌ ๋ฏธ๋””์–ด๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๊ณ  ํ•™์ƒ์ด RTSP ํ”„๋กœํ† ์ฝœ๋กœ ๋ฏธ๋””์–ด๋ฅผ ์š”์ฒญํ•˜๋ฉด ๋ฏธ๋””์–ด ๋ฆด๋ ˆ์ด ์„œ๋ฒ„๋Š” RTSP ์„œ๋ฒ„๋กœ์„œ ํ•™์ƒ์˜ RTSP client ์™€ RTSP handshake ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ , WebRTC client ๋กœ์„œ ์†Œ์Šค ๋ฏธ๋””์–ด ์„œ๋ฒ„์™€ WebRTC ๋ฐ stun ๊ทธ๋ฆฌ๊ณ  dtls handshake ๊นŒ์ง€ ์ˆ˜ํ–‰
    > ๊ฐœ๋ฐœํ•œ ๋ฏธ๋””์–ด ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋Š” AWS EC2 ๋ฅผ ํ†ตํ•˜์—ฌ ์„œ๋ฒ„๋ฅผ ๊ตฌ๋™ ๋ฐ ์šด์˜

4. ์„ฑ๊ณผ ๋ฐ ์„ฑ์žฅ ํฌ์ธํŠธ
- ์ด ํ”„๋กœ์ ํŠธ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ด์ „์— ์Œ“์•˜๋˜ ํด๋ผ์šฐ๋“œ ์‹œ์Šคํ…œ ์šด์˜ ๋ฐ ๋ฆฌ๋ˆ…์Šค ๊ฒฝํ—˜๊ณผ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ์ง€์‹๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ ๋” ๋งŽ์€ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ๊ณผ ์„œ๋น„์Šค ๊ฐœ๋ฐœ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”
- ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ ์„œ๋น„์Šค์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด ์‹œ์Šคํ…œ ์ž์›์˜ ํšจ์œจ์ ์ธ ์‚ฌ์šฉ ๋ฐ ์„ฑ๋Šฅ ์ตœ์ ํ™” ์—ญ๋Ÿ‰ ๊ฐ•ํ™”

5) AEIT ์„œ๋น„์Šค ๊ฐœ๋ฐœ

1. ์„œ๋น„์Šค ๊ฐœ์š”
- ๋งˆ์ด๋ฐ์ดํ„ฐ ์ค‘๊ฐœ ํ”Œ๋žซํผ
https://aeit.io

2. ๊ธฐ์ˆ  ๋ฐ ๋‹ด๋‹น ํŒŒํŠธ
- ๊ฐœ๋ฐœ
  - ๊ฐœ๋ฐœ ์–ธ์–ด : JAVA (JDK 17)
  - ํŒจํ‚ค์ง€ ๋ฐฐํฌ ํ™˜๊ฒฝ : Linux (ubuntu 20.04 LTS)
  - ๋‹ด๋‹น ํŒŒํŠธ ๋ฐ ๊ฐœ๋ฐœ ๋‚ด์šฉ
     > Kafka ๋ฅผ ํ™œ์šฉํ•œ P2P ํ†ต์‹  ๋ฐ์ดํ„ฐ ๊ตํ™˜ ํ”„๋กœํ† ์ฝœ ๊ฐœ๋ฐœ (์›น <> ๋ชจ๋ฐ”์ผ)
     > RabbitMQ ๋ฅผ ํ†ตํ•œ MSA ๊ฐ„ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ ๊ฐœ๋ฐœ
     > Spring boot ๋ฐ QueryDSL ๋ฅผ ํ™œ์šฉํ•œ ์„œ๋น„์Šค ๊ฐœ๋ฐœ
- ์ธํ”„๋ผ
  - AWS ๋ฅผ ํ™œ์šฉํ•œ ์„œ๋น„์Šค ๋ผ์ดํ”Œ ์‚ฌ์ดํด ๋ฐ ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ
     > CodePipeline ์„ ํ™œ์šฉํ•œ EC2 ์ž๋™ ๋ฐฐํฌ
     > ALB ์™€ WAF ๋ฅผ ํ™œ์šฉํ•œ ๋ถˆํ•„์š”ํ•œ ํŠธ๋ž˜ํ”ฝ ์ œ์–ด ๋ฐ ์„œ๋น„์Šค ๋”œ๋ ˆ์ด ์ตœ์†Œํ™” ์ž‘์—… ์ง„ํ–‰
     > ํƒ€์ž„๋ฆฌํ”„๋ฅผ ํ™œ์šฉํ•œ ์ธํ”„๋ผ ์‹œ๊ฐํ™” ์›น ์„œ๋ฒ„ ๋ณ„๋„๋กœ ๊ฐœ๋ฐœํ•˜์—ฌ ์‹ ์†ํ•œ ์žฅ์•  ๋Œ€์‘ ์ง„ํ–‰

2. ์„ฑ๊ณผ ๋ฐ ์„ฑ์žฅ ํฌ์ธํŠธ
- ์ด์ „์— ๊ฒฝํ—˜ํ•œ ๋ฏธ๋””์–ด ํ”„๋กœํ† ์ฝœ ๊ฐœ๋ฐœ์„ ํ†ตํ•˜์—ฌ ์นดํ”„์นด์™€ ํ•จ๊ป˜ ์ง์ ‘ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ํ”„๋กœํ† ์ฝœ์„ ๊ฐœ๋ฐœํ•จ์œผ๋กœ์จ ์›ํ™œํ•œ P2P ํ†ต์‹  ๊ฐœ๋ฐœ์— ๊ธฐ์—ฌ
- ์„œ๋น„์Šค ๊ฐœ๋ฐœ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ง์ ‘ ํด๋ผ์šฐ๋“œ๋ฅผ ํ™œ์šฉํ•œ ์ธํ”„๋ผ ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๋ผ์ดํ”„ ์‚ฌ์ดํด์— ๊ธฐ์—ฌ
- ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ(์›น, ๋ชจ๋ฐ”์ผ ๋“ฑ) ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ API ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐœ๋ฐœ ๊ฒฝํ—˜

6) MONGLE ์„œ๋น„์Šค ๊ฐœ๋ฐœ

1. ์„œ๋น„์Šค ๊ฐœ์š”
- ์ˆํผ ๋™์˜์ƒ ๊ณต์œ  ๋ฐ ์‡ผํ•‘๋ชฐ ํ”Œ๋žซํผ
https://mongle.com

2.  ๊ธฐ์ˆ  ๋ฐ ๋‹ด๋‹น ํŒŒํŠธ
- ๊ฐœ๋ฐœ
  - ๊ฐœ๋ฐœ ์–ธ์–ด : JAVA (JDK 11)
  - ํŒจํ‚ค์ง€ ๋ฐฐํฌ ํ™˜๊ฒฝ : Linux (ubuntu 20.04 LTS)
  - ๋‹ด๋‹น ํŒŒํŠธ ๋ฐ ๊ฐœ๋ฐœ ๋‚ด์šฉ
     > AWS S3 ๋ฅผ ํ™œ์šฉํ•œ ๋ฏธ๋””์–ด ๋ฆฌ์†Œ์Šค ์ €์žฅ ๋ฐ ์กฐํšŒ > ๋ฐ”์ดํŠธ ํ”Œ๋Ÿฌ์Šค CDN ์„ ์‚ฌ์šฉํ•˜์—ฌ ์›น์‚ฌ์ดํŠธ์— ๋ฏธ๋””์–ด ๋ฆฌ์†Œ์Šค๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ „๋‹ฌ
     > ์‡ผํ•‘๋ชฐ ์„œ๋น„์Šค์— ํ•„์š”ํ•œ ๋ชจ๋“  REST API ๊ฐœ๋ฐœ (์†Œ์…œ ๋กœ๊ทธ์ธ, ์ƒํ’ˆ ๊ด€๋ฆฌ, ํšŒ์› ๋ฐ ์—…์ฒด ๊ด€๋ฆฌ, ์–ด๋“œ๋ฏผ ๊ธฐ๋Šฅ, ๋ฏธ๋””์–ด ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ ๋“ฑ)
     > Spring boot ๋ฐ MyBatis ๋ฅผ ํ™œ์šฉํ•œ ์„œ๋น„์Šค ๊ฐœ๋ฐœ
- ์ธํ”„๋ผ
  - AWS ๋ฅผ ํ™œ์šฉํ•œ ์„œ๋น„์Šค ๋ผ์ดํ”Œ ์‚ฌ์ดํด ๋ฐ ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ
     > CodePipeline ์„ ํ™œ์šฉํ•œ EC2, ECS ์ž๋™ ๋ฐฐํฌ
     > ALB ์™€ WAF ๋ฅผ ํ™œ์šฉํ•œ ๋ถˆํ•„์š”ํ•œ ํŠธ๋ž˜ํ”ฝ ์ œ์–ด ๋ฐ ์„œ๋น„์Šค ๋”œ๋ ˆ์ด ์ตœ์†Œํ™” ์ž‘์—… ์ง„ํ–‰
     > ํƒ€์ž„๋ฆฌํ”„๋ฅผ ํ™œ์šฉํ•œ ์ธํ”„๋ผ ์‹œ๊ฐํ™” ์›น ์„œ๋ฒ„ ๋ณ„๋„๋กœ ๊ฐœ๋ฐœํ•˜์—ฌ ์‹ ์†ํ•œ ์žฅ์•  ๋Œ€์‘ ์ง„ํ–‰

3. ์„ฑ๊ณผ ๋ฐ ์„ฑ์žฅ ํฌ์ธํŠธ
- ์‡ผํ•‘๋ชฐ + ๋™์˜์ƒ ์ˆํผ ํ”Œ๋žซํผ ์ง์ ‘ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์„ ์Œ“์•„ ๋‹ค์–‘ํ•œ ์›น API ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋ฐœ
- ์„œ๋น„์Šค ๊ฐœ๋ฐœ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ง์ ‘ ํด๋ผ์šฐ๋“œ๋ฅผ ํ™œ์šฉํ•œ ์ธํ”„๋ผ ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๋ผ์ดํ”„ ์‚ฌ์ดํด์— ๊ธฐ์—ฌ
- NICE(๊ณ„์ขŒ 1์› ์ธ์ฆ, OTP ๊ธฐ๋Šฅ), ์†Œ์…œ ๋กœ๊ทธ์ธ(kakao, naver, google, apple), CMS(๊ณ„์ขŒ ์ถœ๊ธˆ, ์ž…๊ธˆ ๊ธฐ๋Šฅ) ์—ฐ๋™ ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์จ๋“œ ํŒŒํ‹ฐ ์—ฐ๋™ ๊ฐœ๋ฐœ

๐Ÿ“ ํ˜ผ์ž ๋งŒ๋“ค์–ด๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

1) TDD

- ๋ชฉ์  : C ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ์‹œ TDD ์ ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ์ œ์ž‘
- ๊ธฐ๊ฐ„ : 2020.06 ~ 2020.09
- ๊ฒฐ๊ณผ๋ฌผ : https://github.com/Samuel-Jeong/ttlib
- ๊ธฐ์ˆ  ์Šคํƒ
  - Language : C

2) Network framework

- ๋ชฉ์  : Posix network ์ฝ”๋“œ์™€ Netty Framework ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ฒด๊ณ„์ ์ธ ๋„คํŠธ์›Œํฌ ์ฝ”๋”ฉํ•˜๊ธฐ ์œ„ํ•ด ์ œ์ž‘
- ๊ฒฐ๊ณผ๋ฌผ : https://github.com/Samuel-Jeong/java_network_base_framework
- ๊ธฐ์ˆ  ์Šคํƒ
  - Language : Java

3) FSM

- ๋ชฉ์  : State ๊ธฐ๋ฐ˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ œ์ž‘
- ๊ฒฐ๊ณผ๋ฌผ : https://github.com/Samuel-Jeong/JFSM
- ๊ธฐ์ˆ  ์Šคํƒ
  - Language : Java

4) Scheduler

- ๋ชฉ์  : ํšจ์œจ์ ์ธ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋”ฉ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ œ์ž‘
- ๊ฒฐ๊ณผ๋ฌผ : https://github.com/Samuel-Jeong/jscheduler
- ๊ธฐ์ˆ  ์Šคํƒ
  - Language : Java

5) FileManager

- ๋ชฉ์  : ํŒŒ์ผ IO ๊ณตํ†ต ๊ธฐ๋Šฅ ๋ชจ๋“ˆ ์ œ์ž‘
- ๊ฒฐ๊ณผ๋ฌผ : https://github.com/Samuel-Jeong/jFileManager
- ๊ธฐ์ˆ  ์Šคํƒ
  - Language : C

6) RTSP

- ๋ชฉ์  : RTSP ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์„œ๋ฒ„ ์ œ์ž‘
- ๊ฒฐ๊ณผ๋ฌผ
  - RTP : https://github.com/Samuel-Jeong/JRTSP_RTP
  - HLS : https://github.com/Samuel-Jeong/JRTSP_HLS
- ๊ธฐ์ˆ  ์Šคํƒ
  - Language : Java

7) DTLS

- ๋ชฉ์  : DTLS ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ
- ๊ฒฐ๊ณผ๋ฌผ : https://github.com/Samuel-Jeong/JDTLS
- ๊ธฐ์ˆ  ์Šคํƒ
  - Language : Java

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors