arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

Branch, Version, Integration

Integration Process

๋ณ‘ํ•ฉ ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • discover

    • discover ๋ฐœ์ƒ ์ฆ‰์‹œ ๋ณ‘ํ•ฉ ์š”์ฒญ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

    • ํ”„๋กœํ† ์ฝœ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋”ฐ๋ผ ์Šคํ‚ค๋งˆ ํฌ๋งท์— ๋Œ€ํ•œ ๊ฒ€์ฆ์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค.

      • ํฌ๋งท ์—๋Ÿฌ๋Š” ๋ณ‘ํ•ฉ ์š”์ฒญ ๋ฉ”์„ธ์ง€ ๋ฆฌ์ŠคํŠธ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

      • ์ ‘๊ทผ ์ œ์–ด๋ฅผ ์šฐํšŒํ•˜๋Š” ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๊ฐ€ ๋ณ‘ํ•ฉ ์š”์ฒญ ๋ฉ”์„ธ์ง€ ๋ฆฌ์ŠคํŠธ์— ํฌํ•ฉ๋ฉ๋‹ˆ๋‹ค.

    • ๊ฒ€์ฆ ์„ฑ๊ณต์‹œ ๋ณ‘ํ•ฉ ์š”์ฒญ์ด ํ์— ์‚ฝ์ž…๋˜๋ฉด์„œ ํŠน์ • ์‹œ๊ฐ„(2์ดˆ๋ฅผ ๊ธฐ๋ณธ๊ฐ’) ๋™์•ˆ debounce ํ›„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

      • ํ์—์„œ ํŠน์ • ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๋ณ‘ํ•ฉ ์š”์ฒญ์ด ๋‹ค์ˆ˜์ธ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.

      • ํ”„๋กœํ† ์ฝœ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ integrationDependencyResolver๊ฐ€ ๊ตฌํ˜„๋œ ๊ฒฝ์šฐ (eg. GraphQL) ํ ์•ˆ์—์„œ ์ฒ˜๋ฆฌ ์ˆœ์„œ๊ฐ€ ์กฐ์ • ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๊ฒ€์ฆ ์‹คํŒจ์‹œ report ๋‹จ๊ณ„๋กœ ๊ฑด๋„ˆ ๋œ๋‹ˆ๋‹ค.

  • hash

    • ์„œ๋น„์Šค API ์Šคํ‚ค๋งˆ์—์„œ branch, description, deprecated๋“ฑ์˜ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ์ œ์™ธํ•œ ์Šคํ‚ค๋งˆ ๊ฐ์ฒด ์ „์ฒด๋ฅผ MD5 ํ•ด์‹ฑํ•˜์—ฌ ๊ณ ์œ ํ•œ ๋ฒ„์ „ ํ•ด์‹œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • update

    • master ๋ธŒ๋žœ์น˜์˜ ์Šคํ‚ค๋งˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ชจ๋“  ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ์ด ์‹œ๋„๋ฉ๋‹ˆ๋‹ค.

      • ์ด ๋•Œ master

  • report

    • ๋ณ‘ํ•ฉ ์š”์ฒญ์˜ ๋ฉ”์„ธ์ง€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋””๋ฒ„๊ทธ ๋ฉ”์„ธ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • ๋ณ‘ํ•ฉ ์š”์ฒญ์˜ ์ถœ์ฒ˜ ๋…ธ๋“œ๋กœ ๋””๋ฒ„๊ทธ ๋ฉ”์„ธ์ง€๋ฅผ reportํ•ฉ๋‹ˆ๋‹ค.

  • Branch Strategy Diagram

    ๋ธŒ๋žœ์น˜๊ฐ„ ๋ณ‘ํ•ฉ ์ „๋žต์„ ํ‘œ๋กœ ๋„์‹ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    ํ‘œ์—์„œ a@v1๋Š” a ์„œ๋น„์Šค ์Šคํ‚ค๋งˆ ์ค‘ v1 ๋ฒ„์ „์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ฒŒ์ดํŠธ์›จ์ด์— ๋ฒ„์ „์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” ์Šคํ‚ค๋งˆ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋น„์Šค ๋…ธ๋“œ์˜ ์—ฐ๊ฒฐ์ด ๋Š๊ธด ๊ฒฝ์šฐ๋Š” ์—ฐ๊ด€๋œ ์Šคํ‚ค๋งˆ์˜ ๋…ธ๋“œํ’€์—์„œ ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

    • ์ด ๋•Œ ์—ฐ๊ด€๋œ ์Šคํ‚ค๋งˆ๋“ค์—์„œ ๋…ธ๋“œํ’€์ด ๋นˆ ์Šคํ‚ค๋งˆ๋“ค์„ ์ œ๊ฑฐํ•˜๊ธฐ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

  • ์™ธ์˜ ๋ธŒ๋žœ์น˜์—์„œ ์Šคํ‚ค๋งˆ์˜ ์„œ๋น„์Šค๋ช…์ด ์ค‘๋ณต๋˜๋Š” ๊ฒฝ์šฐ ๋ณ‘ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ์Šคํ‚ค๋งˆ์˜ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค.
  • ์ด์™ธ์˜ ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ฃผ์–ด์ง„ ๋ธŒ๋žœ์น˜์—๋งŒ ๋ณ‘ํ•ฉ์ด ์‹œ๋„๋ฉ๋‹ˆ๋‹ค.

  • ํ”„๋กœํ† ์ฝœ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋”ฐ๋ผ ๊ฐ ํ”„๋กœํ† ์ฝœ๋ณ„ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • ๋ณ‘ํ•ฉ์— ์„ฑ๊ณตํ•˜๋ฉด ์ƒ์„ฑ๋œ Gateway API ์Šคํ‚ค๋งˆ ๋ฒ„์ „์— latest ํƒœ๊ทธ ๋ฐ 8 ๊ธ€์ž์˜ ์ˆ ํ•ด์‹œ(eg. abcdefgh)๊ฐ€ ํƒœ๊ทธ๋กœ ๋ถ€์ฐฉ๋ฉ๋‹ˆ๋‹ค.

  • ์˜ต์…˜์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ๋ธŒ๋žœ์น˜๋ณ„ API Catalog๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

  • ์˜ต์…˜์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ๋ธŒ๋žœ์น˜๋ณ„ Service Catalog๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

  • master

    dongwook

    ๋น„๊ณ 

    initial schema

    (empty)

    N/A

    a added to master

    a@v1

    N/A

    a updated to master

    a@v2

    N/A

    b added to dongwook

    a@v2

    a@v2 b@v1

    ์ƒˆ๋กœ์šด b ์„œ๋น„์Šค๋ฅผ dongwook ๋ธŒ๋žœ์น˜๋กœ ๋ถ„๊ธฐํ•ด์„œ ์ž‘์—…; ์ถฉ๋Œํ•˜์ง€ ์•Š๋Š” ์Šคํ‚ค๋งˆ๋“ค์€ ๋ณต์ œ๋˜์ง€ ์•Š๊ณ  ์ฐธ์กฐ๋ฉ๋‹ˆ๋‹ค.

    a updated to master

    a@v3

    a@v3 b@v1

    master ๋ธŒ๋žœ์น˜์˜ ์—…๋ฐ์ดํŠธ๋Š” ๋ชจ๋“  ๋ธŒ๋žœ์น˜๋กœ ์ „ํŒŒ๋ฉ๋‹ˆ๋‹ค.

    a updated to dongwook

    a@v3

    a@v4 b@v1

    master ์ด์™ธ์˜ ๋ธŒ๋žœ์น˜์˜ ์—…๋ฐ์ดํŠธ๋Š” ์ž๊ธฐ ๋ธŒ๋žœ์น˜๋กœ๋งŒ ์ „ํŒŒ๋ฉ๋‹ˆ๋‹ค.

    a updated to master

    a@v3-2

    a@v4 b@v1

    ์ถฉ๋Œํ•˜๋Š” ๊ฒฝ์šฐ ์ž๊ธฐ ๋ธŒ๋žœ์น˜ ์Šคํ‚ค๋งˆ์˜ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค.

    c added to master

    a@v3-2 c@v1

    a@v5 b@v1 c@v1

    master ๋ธŒ๋žœ์น˜์˜ ์—…๋ฐ์ดํŠธ๋Š” ๋ชจ๋“  ๋ธŒ๋žœ์น˜๋กœ ์ „ํŒŒ๋ฉ๋‹ˆ๋‹ค.

    b added to master

    a@v3-2 b@v1 c@v1

    a@v5 b@v1 c@v1

    ๊ฐœ๋ฐœ๋œ b ์„œ๋น„์Šค๋ฅผ dongwook ๋ธŒ๋žœ์น˜์—์„œ master ๋ธŒ๋žœ์น˜๋กœ ๋ณ€๊ฒฝ

    a updated to master

    a@v5 b@v1 c@v1

    a@v5 b@v1 c@v1

    ์ˆ˜์ •๋œ a ์„œ๋น„์Šค๋ฅผ dongwook ๋ธŒ๋žœ์น˜์—์„œ master ๋ธŒ๋žœ์น˜๋กœ ๋ณ€๊ฒฝ

    dongwook branch removed

    a@v5 b@v1 c@v1

    N/A

    Routing Rule

    Gateway ์›น ์„œ๋ฒ„๋Š” [/~BRANCH[@TAG]]/<ENDPOINT>์˜ ๊ทœ์น™๋Œ€๋กœ API ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋ผ์šฐํŠธํ•ฉ๋‹ˆ๋‹ค. ์ฒซ๋ฒˆ์งธ ๊ฒฝ๋กœ ์กฐ๊ฐ์„ ๋ธŒ๋žœ์น˜(master๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ)๋กœ ๋‘๋ฒˆ์งธ ๊ฒฝ๋กœ ์กฐ๊ฐ์„ ํƒœ๊ทธ(latest๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ)๋กœ ์ดํ•˜ ๊ฒฝ๋กœ๋ฅผ API ์—”๋“œํฌ์ธํŠธ๋กœ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค.

    ๋ผ์šฐํŠธ ์˜ˆ์‹œ

    ๊ฐ„๋žต

    ๋ธŒ๋žœ์น˜ ํฌํ•จ

    ํƒœ๊ทธ ํฌํ•จ

    GET /players/1

    GET /~master/players/1

    GET /~master@latest/players/1

    -

    -

    GET /~master@h4g3f2e1/players/1

    -

    GET /~dongwook/players/1

    GET /~dongwook@latest/players/1

    -

    ํ…Œ์ด๋ธ”์˜ ๊ฐ ํ–‰์€ ๋™์ผํ•œ ๋ฒ„์ „์˜ ํ•ธ๋“ค๋Ÿฌ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

    ๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ๊ทœ์น™

    • ์˜๋ฌธ ์†Œ๋ฌธ์ž ๋ฐ ์ˆซ์ž, -, _๋งŒ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

    • ๊ธฐ์กด ์Šคํ‚ค๋งˆ ์—”๋“œํฌ์ธํŠธ๋‚˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ base ๊ฒฝ๋กœ์™€ ์ค‘๋ณต๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    ํƒœ๊ทธ ์ด๋ฆ„ ๊ทœ์น™

    • ์˜๋ฌธ ์†Œ๋ฌธ์ž ๋ฐ ์ˆซ์ž๋กœ๋งŒ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

    ์ด๋ฒคํŠธ/๋ธŒ๋žœ์น˜

    -

    GET /~dongwook@a4b3c2d1/players/1

    POST /graphql

    POST /~master/graphql

    GET /~master@latest/graphql

    -

    POST /~dongwook/graphql

    GET /~dongwook@latest/graphql

    -

    GET /~ws-dev/chat

    GET /~ws-dev@latest/chat