Apicurio-studio: ํŽธ์ง‘๊ธฐ์—์„œ AsyncAPI ํ‘œ์ค€ ์ง€์› ๊ฐ€๋Šฅ

์— ๋งŒ๋“  2018๋…„ 09์›” 25์ผ  ยท  23์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Apicurio/apicurio-studio

AsyncAPI์—๋Š” ์ž์ฒด AsyncAPI ํŽธ์ง‘๊ธฐ ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ด ํ˜•์‹๊ณผ ์‹œ๊ฐ์  ์ง€์›์„ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค(AsyncAPI ํŽธ์ง‘๊ธฐ์—๋Š” ์ด ์˜ต์…˜์ด ์—†๊ณ  yaml ์„ค๋ช… -> ์‹œ๊ฐ์  ์ง€์›๋งŒ ์žˆ์Œ).
@EricWittmann ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”? ์•„๋‹ˆ๋ฉด ๋ฏธ์นœ ์ƒ๊ฐ์ž…๋‹ˆ๊นŒ?

proposal

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๊ณง ๊ธฐ๋ณธ์ ์œผ๋กœ AsyncAPI ์ง€์›์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊บผ์ ธ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค).

๋ชจ๋“  23 ๋Œ“๊ธ€

AsyncAPI์šฉ Apicurio ๋น„์ฃผ์–ผ ํŽธ์ง‘๊ธฐ๋ฅผ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ด ํ”„๋กœ์ ํŠธ์—๋Š” ๊ทธ๋Ÿฌํ•œ ๋…ธ๋ ฅ์„ ์œ„ํ•œ ์—”์ง€๋‹ˆ์–ด๋ง ๋Œ€์—ญํญ์ด ์—†์Šต๋‹ˆ๋‹ค. :(

@EricWittmann ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€ ์•Š๋‹ค๋ฉด ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ž‘์—…์„ ์œ„ํ•ด ์‹œ๊ฐ„์„ ์ฐพ๋„๋ก ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค...

AsyncAPI์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์—„์ฒญ๋‚œ ์–‘์˜ ์ž‘์—…์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ž‘์—…์€ ์•„๋งˆ๋„ ์ด๋ฅผ ์œ„ํ•œ ํŒŒ์„œ/๋ชจ๋ธ ๋ ˆ์ด์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. OAI์˜ ๊ฒฝ์šฐ ์—ฌ๊ธฐ์—์„œ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/apicurio/oai-ts-core

์•„๋งˆ๋„ asyncapi-ts-core ์™€ ๊ฐ™์€ ์ƒˆ๋กœ์šด ์ €์žฅ์†Œ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ์ผ์„ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ํ›Œ๋ฅญํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค! Apicurio์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์— asyncapi ์ง€์›์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ธฐ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ UI ํŽ˜์ด์ง€์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ณ ๋ ค ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— AsyncAPI๋Š” ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ํ™•๋ณดํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Apicurio์—์„œ ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์šฐ์„  ์ˆœ์œ„ ๋ชฉ๋ก์— ์˜ฌ๋ผ ์žˆ์Šต๋‹ˆ๋‹ค. :) ์•„์ง ETA ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์˜์—ญ์—์„œ ์•ฝ๊ฐ„์˜ ์ง„์ „์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@EricWittmann , ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ์ถฉ๋ถ„ํ•˜๋‹ค๋ฉด ์ฐธ์—ฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

FWIW, ์ด์ œ AsyncAPI 2.0.0์šฉ ํŒŒ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Typescript๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์— ๋Œ€ํ•ด ๋…ผ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. Apicurio์—์„œ AsyncAPI๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—… ๋ชฉ๋ก์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋„์™€๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :)

ํฅ๋ฏธ ๋กญ๋„ค์š” , https://github.com/Apicurio/apicurio-data-models

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Java๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ Typescript๋กœ ๋ณ€ํ™˜๋˜์–ด ๋ฐฑ์—”๋“œ์™€ UI์—์„œ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ „์ฒด ๋ฐฉ๋ฌธ์ž ์ง€์›, ๊ฐ„๋‹จํ•œ ์šด์˜ ๋ณ€ํ™˜ ์—”์ง„ ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์˜๊ฒฌ ์ค‘ ๋” ํฅ๋ฏธ๋กœ์šด ๋ถ€๋ถ„์ธ Apicurio์—์„œ AsyncAPI๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. :) :) ์ง€๊ธˆ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์•„๋งˆ๋„ ํŽธ์ง‘์ž ์ง€์›์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ถ๊ทน์ ์œผ๋กœ ์ €๋Š” ์‹œ๊ฐ์  OpenAPI ํŽธ์ง‘๊ธฐ(๊ฒ€์ฆ ๋ฐ ๋™์‹œ ํŽธ์ง‘ ์ง€์› ํฌํ•จ)์™€ ๊ธฐ๋Šฅ ํŒจ๋ฆฌํ‹ฐ๋ฅผ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹จ๊ธฐ์ ์œผ๋กœ (์•„๋งˆ๋„ ์ผ์‹œ์ ์ธ) ์ข‹์€ ๊ธฐ์—ฌ๋Š” ๊ธฐ์กด ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ AsyncAPI ํŽธ์ง‘๊ธฐ๋ฅผ Apicurio์— ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋งค์šฐ ๋ฉ‹์ง€๊ณ  ๋จผ ๊ธธ์„ ๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ํŽธ์ง‘๊ธฐ์™€ ๋น„์ฃผ์–ผ ํŽธ์ง‘๊ธฐ๊ฐ€ ๋ชจ๋‘ ์ง€์›๋˜๋Š” ๋ฏธ๋ž˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜์„ ๊ฐœ๋ฐœ์ž๋Š” ์‹œ๊ฐ์  ํŽธ์ง‘๊ธฐ๋ฅผ ์ข‹์•„ํ•˜์ง€ ์•Š๊ณ  ๋Œ€์‹  ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ๋ฅผ ์›ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์„ ์ด๋™.

ํŽธ์ง‘์ž ์™ธ์—๋Š” ์ž‘์—… ๋ชฉ๋ก์„ ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์€ ํŽธ์ง‘๊ธฐ ์œ„์—์„œ ์ฆ๋ถ„๋ฉ๋‹ˆ๋‹ค(์˜ˆ: ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ).

๊ท€ํ•˜์˜ ์˜๊ฒฌ ์ค‘ ๋” ํฅ๋ฏธ๋กœ์šด ๋ถ€๋ถ„์ธ Apicurio์—์„œ AsyncAPI๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. :) :)

๋“ฃ๊ณ  ์žˆ์–ด์š” :)

๊ธ€์Ž„, ๋‹น์‹ ์ด ๋งํ–ˆ๋“ฏ์ด ์‰ฝ๊ณ  / ๋” ์‰ฌ์šด ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ์‹œ๋‹ค. ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์—ญํญ์ด ํ™•๋ณด๋˜๋Š” ๋Œ€๋กœ ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”!

ํ˜‘๋ ฅ์€ ํ™•์‹คํžˆ ๊ต‰์žฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ๋™์•ˆ AsyncAPI ํŽธ์ง‘๊ธฐ๋ฅผ ๋‹ค๋ฅธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ํฌํ•จํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ฌธ์„œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ POC๋กœ ํฅ๋ฏธ๋กœ์šด ๊ฒƒ์„ ๋งค์šฐ ๋นจ๋ฆฌ ๋…น์•„์›ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ๋†€์ดํ„ฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ํŽธ์ง‘๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. https://playground.asyncapi.io/

๋‚˜๋Š” ์•„์ง ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์กฐ์‚ฌํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๋‹ค๋ฅธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ์‰ฝ๊ฒŒ ํ™œ์šฉ๋˜๋„๋ก ๊ตฌ์ถ•๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ ์‚ฌ์šฉ์ด ์–ด๋ ต์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ Apicurio Studio ๋‚ด์—์„œ (์ตœ์†Œํ•œ ์ดˆ๊ธฐ) AsyncAPI ์ง€์›์„ ์š”๊ตฌํ•˜๋Š” ๋ฐ ๋จผ ๊ธธ์„ ๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @EricWittmann ,

์ €๋Š” ์˜ค๋Š˜ AsyncAPI์šฉ ๊ทธ๋ž˜ํ”ฝ ํŽธ์ง‘๊ธฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋น„์šฉ์ด ์–ผ๋งˆ์ธ์ง€ ์กฐ์‚ฌํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํ• ์• ํ•˜๊ณ  ์ตœ๊ทผ ๊ฒฐ๊ณผ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์Šคํฌ๋ฆฐ์ƒท์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ €๋Š” OpenAPI์™€ ๋™์ผํ•œ ๊ตฌ์กฐ๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค๊ณ  ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ์™€ ๋น„๊ตํ•˜์—ฌ ์ด๋ฏธ ๊ธฐ๋Šฅ ํŒจ๋ฆฌํ‹ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— ์ถ”๊ฐ€ํ•œ AsyncAPI ์˜ˆ์ œ์—์„œ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

asyncapi-editor-01
asyncapi-editor-02

๊ณต์œ ํ•˜๊ณ  ์‹ถ์€ ๋ช‡ ๊ฐ€์ง€ ์ƒ๊ฐ๊ณผ ์งˆ๋ฌธ:

  • ๊ตฌํ˜„ ์ธก๋ฉด์—์„œ 1์œ„: ์ƒˆ ํŽธ์ง‘๊ธฐ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์ด๋ฏธ ์žˆ์—ˆ๊ณ  ๊ธฐ์กด ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ AsyncApi* ๋Œ€์‘ ์š”์†Œ๋กœ ๋ณต์ œํ•˜์—ฌ ์ด๋ฅผ ๋”ฐ๋ฅด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ OasDocument ๋ฅผ AaiDocument ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ๊ทธ๋‹ค์ง€ ์šฐ์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ... ๊ทธ๋Ÿฌ๋‚˜ ๋ฐฉ๊ธˆ ํ‘œ๋ฉด์„ ๊ธ์—ˆ๊ณ  ๋‘ ์‚ฌ์–‘ ์‚ฌ์ด์— ๋” ์ค‘์š”ํ•œ ์ฐจ์ด์ ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค ... ์ฝ”๋“œ๋ฅผ ๋”ฐ๋ผ if document.isOpenApi() ๋˜๋Š” if document.isAsyncApi() ๊ฐ€ ๋งŽ๋”๋ผ๋„ ์ด ๋ฐฉ์‹์„ ์œ ์ง€ํ•˜๊ณ  2๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ ๊ตฌ์„ฑ ์š”์†Œ ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ƒํ˜ธํ™”ํ•˜๋ ค๊ณ  ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ด ?

  • 2์ฐจ ๊ณต์ •. ์ „์—๋„ ๋งํ–ˆ๋“ฏ์ด ํฐ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค... ๊ธฐ์ˆ ์ ์œผ๋กœ ์–ด๋ ต์ง€๋Š” ์•Š์ง€๋งŒ ๊ธธ๊ณ  ์„ธ์‹ฌํ•œ... ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์ธ๋‚ด์‹ฌ์ด ์—†์„ ๊ฒƒ์ด๋ฉฐ ์–ด๋–ค ๊ฒƒ์„ ์ปค๋ฐ‹ํ•˜๊ธฐ ์ „์— ์ „์ฒด ์‚ฌ์–‘ ํŽธ์ง‘๊ธฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์‹คํ˜„ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋†’์€ ์šฐ์„  ์ˆœ์œ„( Channels , DataTypes , Messages , Examples ;- )) ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋” ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„( Servers , Traits ๋“ฑ...)๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ด ? ๋งŽ์€ pull ์š”์ฒญ์— ๋Œ€ํ•ด ๊ตฌํ˜„์„ ๋ถ„ํ• ํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๊นŒ?

Microcks๊ฐ€ ์ด์ œ AsyncAPI ๋ชจ์˜(๋ฐ ๋ช‡ ์ฃผ ๋‚ด ํ…Œ์ŠคํŠธ)๋ฅผ ์ง€์›ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์…จ์„ ๊ฒƒ์ด๋ฏ€๋กœ ๊ธฐ๊บผ์ด ๋„์™€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Apicurio๊ฐ€ ์ด๋ฅผ ์ง€์›ํ•˜๊ณ  ์ตœ์‹  API ์‚ฌ์–‘์˜ ์ฃผ์š” ์Šคํƒ€์ผ์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์€ ๊ฒŒ์ž„ ์ฒด์ธ์ €๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

cc @fmvilas ;-)

์šฐ์„  - Microcks์— AsyncAPI ์ง€์›์ด ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค! ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ๋ดค์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ์ƒ๊ฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ, ๊ธฐ์ˆ ์ ์œผ๋กœ "์‰ฌ์šด" ๊ฒฝ์šฐ AsyncAPI Playground ํŽธ์ง‘๊ธฐ๋ฅผ Apicurio Studio์— ํฌํ•จ์‹œํ‚ค๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. :) ๊ทธ๊ฒƒ์€ ๋น ๋ฅธ ์Šน๋ฆฌ๊ฐ€ ๋  ๊ฒƒ์ด๋ฉฐ Apicurio Studio์—์„œ AsyncAPI ๋ฌธ์„œ ํŽธ์ง‘์„ ์œ„ํ•œ ํ•ฉ๋ฆฌ์ ์ธ "๋ฒ ํƒ€" ์ง€์›์„ ์ œ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ ํ›„์—๋Š” ๋น„์ฃผ์–ผ ํŽธ์ง‘๊ธฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(1) ๊ตฌํ˜„์— ๋Œ€ํ•œ ์งˆ๋ฌธ์— ๋Œ€ํ•ด - ๋‹จ๊ธฐ๊ฐ„์— ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ณต์ œํ•˜๊ณ  AsyncAPI์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋‚˜์ค‘์— ๋‘ ํŽธ์ง‘๊ธฐ ๊ฐ„์— ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ๊ฒƒ์ด ์ถฉ๋ถ„ํžˆ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ ์ด์ƒ์€ ์–ด๋Š ์‹œ์ ์—์„œ React์—์„œ ์ „์ฒด Studio UI๋ฅผ ๋‹ค์‹œ ๊ตฌํ˜„ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ˜„์žฌ Angular ๊ตฌํ˜„์—์„œ ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋Š” ๋ชจ๋“  ์ฃผ์š” ๋…ธ๋ ฅ์€ ๋‚ญ๋น„๋ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๋‚˜์ค‘์— ๋‹ค์‹œ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋นจ๋ฆฌ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

(2) ๋…ธ๋ ฅ์ด ๊ธฐ์ˆ ์ ์œผ๋กœ ์–ด๋ ต์ง€๋Š” ์•Š์ง€๋งŒ ๊ธธ๊ณ  ์„ธ์‹ฌํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. :) ๊ตฌํ˜„์ด ์—ฌ๋Ÿฌ PR๋กœ ๋ถ„ํ• ๋˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ธฐ์—ฌ์ž ๊ฐ„์— ์ž‘์—…์„ ๋‚˜๋ˆŒ ์ˆ˜๋„ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@fmvilas ํŽธ์ง‘๊ธฐ๊ฐ€ AsyncAPI Playground ์˜คํ”ˆ ์†Œ์Šค(์˜ˆ๋ผ๊ณ  ๊ฐ€์ •ํ•จ)์— ์žˆ์œผ๋ฉฐ Apicurio Studio์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋„๊ตฌ์—๋„ ์‰ฝ๊ฒŒ ํ†ตํ•ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

(๊ทธ๋ ‡๋‹ค๋ฉด ํ•˜์šฐํˆฌ ๋ฌธ์„œ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋Š” ๊ต‰์žฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค)

@EricWittmann ๊ฐ์‚ฌ

AsyncAPI ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ๋ฅผ ๋จผ์ € ๊ฐ„๋‹จํžˆ ์‚ดํŽด๋ณด์•˜์ง€๋งŒ NodeJS์— ์„œ๋ฒ„ ์ธก ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ†ตํ•ฉ์ด ๊ทธ๋ ‡๊ฒŒ ์‰ฝ์ง€๋Š” ์•Š์„ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ... ๊ทธ๋ž˜์„œ ์—๋””ํ„ฐ์˜ ๊ธธ์„ ๋ชจ์ƒ‰ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค ;-)

์ด๋ฒˆ์ฃผ๋ง๊นŒ์ง€๋Š” ์ข€ ๋” ์‹œ๊ฐ„์„ ํ• ์• ํ•  ์ˆ˜ ์žˆ์„ํ…๋ฐ... ๊ดœ์ฐฎ์œผ์‹œ๋‹ค๋ฉด ๋‹ค์Œ์ฃผ ์ดˆ์— ์ฒซ PR์„ ํ•ด๋ณผ๊ป˜์š”. ์ด ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ์ฃผ ์ •๋ณด๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค ( Version , Contact , License ๋ฐ Tags ) ์—ญ์‹œ ์ฝ๊ธฐ ์ „์šฉ ํ”„๋ฆฌ๋ทฐ Channels ์™ผ์ชฝ ์—ด์˜

์˜คํ”ˆ ์†Œ์Šค์ด๋ฉฐ ์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ AsyncAPI Hub ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๊ฒฐ๊ตญ Playground๋ฅผ ๋Œ€์ฒดํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์•„์ง ์˜คํ”ˆ ์†Œ์Šค๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ํ™•์‹คํžˆ ์˜ฌํ•ด๊ฐ€ ๋๋‚˜๊ธฐ ์ „์— ๊ณง ์žˆ์„ ๊ฒƒ์ด๋ฉฐ, Monaco ํŽธ์ง‘๊ธฐ (VS Code๋ฅผ ์ง€์›ํ•˜๋Š” ํŽธ์ง‘๊ธฐ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ React์—์„œ ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ Apicurio Studio์—์„œ Angular๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•˜๋ฉด ๋„์›€์ด ๋ ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. React์™€ Angular๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋“ค์—ˆ์ง€๋งŒ ์†”์งํžˆ ์‹œ๋„ํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.

@fmvilas ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ถ๊ทน์ ์œผ๋กœ React

์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์„ ํฌํ•จํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์„ ๊ฑฐ๋ผ๊ณ ๋Š” ์ƒ๊ฐํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์ด๋ฏธ ๋ถ„๋ฆฌ๋œ ๊ตฌ์„ฑ ์š”์†Œ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๊ธฐ ์‰ฌ์›Œ์•ผ ํ•˜๋ฏ€๋กœ ์‰ฝ๊ฒŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Monaco๋Š” ์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ˆœ์ „ํžˆ ํด๋ผ์ด์–ธํŠธ ์ธก React์ž…๋‹ˆ๋‹ค.

์—๋””ํ„ฐ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์„ ์œ„ํ•œ ์ฒซ ๋ฒˆ์งธ PR์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค! #1280 ์ฐธ์กฐ

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ #1285์˜ ๋˜ ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค ;-)

๊ณง ๊ธฐ๋ณธ์ ์œผ๋กœ AsyncAPI ์ง€์›์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊บผ์ ธ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค).

์•ˆ๋…•ํ•˜์„ธ์š” @EricWittmann์ž…๋‹ˆ๋‹ค !

Operation, Message, OperationTrait ๋ฐ MessageTrait ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. #1313 ์ฐธ์กฐ ;-)

๊ฐ ๊ฐœ๋…์˜ ๋ชจ๋“  ์„ธ๋ถ€ ์‚ฌํ•ญ์€ ์•„์ง ๊ทธ๋ž˜ํ”ฝ ํ˜•์‹์œผ๋กœ ์™„์ „ํžˆ ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜์ง€๋งŒ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„!

์ด๋ฒˆ ์ฃผ๋ง์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์‹œ๊ฐ„์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ๋˜ ๋‹ค๋ฅธ PR #1382๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์ƒˆ ์ž‘์—…์„ ๋งŒ๋“ค๊ณ  ํŽ˜์ด๋กœ๋“œ ๋ฐ ํ—ค๋” ์œ ํ˜•์„ ์„ค์ •ํ•˜๊ณ  ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ด์ œ Microcks ์ปค๋„ฅํ„ฐ๋กœ AsyncAPI๋ฅผ ์ง์ ‘ ์กฐ๋กฑํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์œ ์šฉํ•จ

@EricWittmann ์–ด๋–ป๊ฒŒ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๊นŒ?

apicurio-studio-ui ์ปจํ…Œ์ด๋„ˆ์˜ ๊ฒฝ์šฐ APICURIO_UI_FEATURE_ASYNCAPI ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ "true" (๋ถ€์šธ์ด ์•„๋‹Œ ๋ฌธ์ž์—ด๋กœ), @alizard0 ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰