Capgo
์ด์•ผ๊ธฐ

A brand new organization system

A capgo ํŒ€์ด 8๊ฐœ์›” ๋™์•ˆ ๊ฐœ๋ฐœํ•œ ์ƒˆ๋กœ์šด ์กฐ์ง ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๋ฐฐ๊ฒฝ์ด์•ผ๊ธฐ

WcaleNieWolny

WcaleNieWolny

์ฝ˜ํ…์ธ  ๋งˆ์ผ€ํ„ฐ

A brand new organization system

์†Œ๊ฐœ

์•ˆ๋…•ํ•˜์„ธ์š”, ์ €๋Š” WcaleNieWolny - Capgo์˜ ๋ฆฌ๋“œ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด์ž…๋‹ˆ๋‹ค.

์ง€๋‚œ 8๊ฐœ์›” ๋™์•ˆ, ์ €๋Š” ์กฐ์ง ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ 8๊ฐœ์›” ๋™์•ˆ, ์ €๋Š” ์กฐ์ง ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค., and as of April 14, I am happy to announce that the system has been completed ๐ŸŽ‰ ๐ŸŽŠ

8๊ฐœ์›” ๋™์•ˆ ๋ชจ๋“  Capgo ๋ถ€๋ถ„์ด ์กฐ์ง์›๋“ค์—๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด์—๋Š”:

  • ์•ฑ
  • ํ†ต๊ณ„
  • ๊ฒฐ์ œ
  • CLI ์ „์ฒด ์ง€์›
  • ๊ทธ๋ฆฌ๊ณ  ๋” ๋งŽ์€ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค!

์ด๊ณณ์— ์˜ค๊ธฐ๊นŒ์ง€๋Š” ์‰ฝ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์˜ 3๋Œ€ ๊ฐœ์ •๋„ ์žˆ์—ˆ๊ณ ์š”.

Organizations v1

์‹œ์ž‘์€ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค... ์ฒ˜์Œ์—๋Š” 2์ฃผ๋งŒ์— ์ด ํ”„๋กœ์ ํŠธ์— ๋“ค์–ด๊ฐ€์„œ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ์—๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ง€์‹์ด ๊ฑฐ์˜ ์—†๊ณ  ํฐ ์•„์ด๋””์–ด๋„ ์—†์—ˆ๋Š”๋ฐ์š”.

์ด๋กœ ์ธํ•ด ๊ฐ€์žฅ hackyํ•œ ํ•ด๊ฒฐ์ฑ…์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ•ด๊ฒฐ์ฑ…์€ ์•ฑ, ์ฑ„๋„, ๋ฒ„์ „๋งŒ ์ง€์›ํ–ˆ์œผ๋ฉฐ, ์ดˆ๋Œ€๋œ ์‚ฌ์šฉ์ž๊ฐ€ ํ†ต๊ณ„๋ฅผ ๋ณผ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ํ›„์— Martin์ด ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฒ€ํ† ํ•ด ์ฃผ๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ ธ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„๋ฌด๋Ÿฐ ๋ณ€ํ™”๋„ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. 3๊ฐœ์›” ํ›„์— ๋‹ค์‹œ ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋Œ์•„๊ฐ€์„œ ๋ชจ๋“  ๋ณ‘ํ•ฉ ์ถฉ๋Œ์„ ๊ณ ์น˜๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ, hackyํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์™„์ „ํžˆ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ˆœ๊ฐ„, ๋ชจ๋“  ๋ฒ„๊ทธ๋ฅผ ๊ณ ์น˜๊ณ  E2E ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€์˜ __CAPGO_KEEP_0__๊ฐ€ ๋งค์šฐ ๊นจ๋—ํ•˜์ง€๋„ ์•Š์•˜๊ณ  ๊ณผ๊ฑฐ์˜ ๋‚˜์˜ ๋งŽ์€ ์ž˜๋ชป๋œ ๊ฒฐ์ •์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , 2์ฃผ ๋™์•ˆ ๋งŽ์€ ๋…ธ๋ ฅ ๋์— ์ตœ์ข…์ ์œผ๋กœ ์ž‘๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

And then I waited for Martin to review this. I waited and waited, but nothing really happened. 3 months later, I decided to come back to this and fix all the merge conflicts. I also decided to test, which turned out to be a great idea. To no surprise, the hacky solution completely failed. At that moment, I decided to fix all bugs and write an extensive E2E test. I had to work with very broken code and a lot of bad decisions made by the past me, but after 2 hard weeks, I finally got it to function.

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

๋ชจ๋“  ์ด ๋ฌธ์ œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ๋งˆํ‹ด์€ PR์„ ๊ฒ€ํ† ํ•˜๊ณ , 1์ฃผ ํ›„์— ํ”„๋กœ๋•์…˜์œผ๋กœ ํ‘ธ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์กฐ์ง v2

์กฐ์ง ์‹œ์Šคํ…œ์€ ๋ชจ๋“  ์ด ๋ฌธ์ œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๊ณ , ๊ทธ๊ฒƒ์€ ํ”„๋กœ์ ํŠธ ์ „์ฒด๋ฅผ ์•ž์„œ ๋‚˜๊ฐ€๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๋‚˜๋Š” ์—ฌ์ „ํžˆ ํ•ด์•ผ ํ•  ์ผ์ด ์žˆ์—ˆ๋Š”๋ฐ์š”.

  • fix the mess made in ํ–‰ ๋‹จ์œ„ ๋ณด์•ˆ
  • ์ „์ฒด CLI์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ด€๋ฆฌ์ž ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์œ ์ž์™€ ๋™์ผํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋„๋ก ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

After ๋งˆํ‹ด๊ณผ ๋งŽ์€ ํ† ๋ก ์„ ๊ฑฐ์นœ ํ›„, ์šฐ๋ฆฌ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์•ž์„œ ๋‚˜๊ฐ€๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์ƒˆ๋กœ์šด ๋ณด์•ˆ ๊ทœ์น™์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ณ , ๋ชจ๋“  ์ž์› ์†Œ์œ ๊ถŒ์„ ์กฐ์ง์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค๊ณ  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒˆ๋กœ์šด ์กฐ์ง ์‹œ์Šคํ…œ๊ณผ ๋” ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ์—ˆ๊ณ , ๋˜ํ•œ ๋งŽ์€ ๋ ˆ๊ฑฐ์‹œ __CAPGO_KEEP_0__๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด RLS code๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ง€๋ฃจํ–ˆ์ง€๋งŒ, 1์ฃผๅŠ ๋งŒ์— ์ „์ฒด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ค€๋น„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

Writing the new RLS code was very tedious, but after a week and a half, the entire migration was ready.

์ด๋ฒˆ์—๋Š” E2E ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ , ์ง์ ‘ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค. 3 ๋ฒˆ์˜ ๊ธด ์ „ํ™”ํ†ตํ™”๋ฅผ ํ†ตํ•ด ๋งˆํ‹ด๊ณผ ๋‚˜ finally๋Š” ํ”„๋กœ๋•์…˜์— ํ‘ธ์‹œํ•˜๊ณ  ์ž˜ ๋  ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ–ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ™

๊ทธ๋Ÿฌ๋‚˜... ์‚ฌ์šฉ์ž ๋“ฑ๋ก์ด ๊นจ์กŒ๊ณ , ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž๋Š” ๊ณ„์ •์„ ๋งŒ๋“ค ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜…

๋น ๋ฅธ ๊ณตํฌ์˜ ์ „ํ™”ํ†ตํ™”๋ฅผ ํ†ตํ•ด, ๋‚˜๋Š” ์ฆ‰์‹œ ํ”„๋กœ๋•์…˜์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ‘ธ์‹œํ•˜๊ณ  ์ž ์— ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜,็งใฎๅค‰ๆ›ด์€ ๋” ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜ฐ

๋‚ด๊ฐ€ ์ž ์—์„œ ๊นจ์–ด๋‚ฌ์„ ๋•Œ, ์‚ฌ์šฉ์ž๋“ค์ด ๋งŽ์€ ๋นˆ ์กฐ์ง์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” 1 ๊ฐœ์˜ ์กฐ์ง๋งŒ ํ—ˆ์šฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. duplicated, ๋นˆ ์กฐ์ง์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ์‹œ๊ฐ„ ๋™์•ˆ ๋ธŒ๋ ˆ์ธ์Šคํ† ๋ฐ์„ ํ•˜์˜€์ง€๋งŒ, ๊ทธ ์™ธ์—๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋น„๊ต์ MOOTHํ•˜๊ฒŒ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์กฐ์ง v3

์ด๊ฒƒ๋„ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„์ง๋„ ๋Œ€๋‹จํ•œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋น ์ ธ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค - ์ฒญ๊ตฌ.

ํ˜„์žฌ๋Š” ์˜ค๋„ˆ๋งŒ ์ฒญ๊ตฌ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์กฐ์ง์„ ์œ„ํ•ด ๊ตฌ๋งคํ•œ ์ƒ๊ฐ์„ ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ๋งคํ•œ ๋ฌธ์ œ๋ฅผ ๋ฐœ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์ง์ ‘ ํ•ด๊ฒฐํ•˜๊ณ , ์ด ๋ฌธ์ œ๊ฐ€ ๋ถˆ๊ฐ€๊ฒฐํ•œ ๋ฌธ์ œ๋ผ๊ณ  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ๋น„๊ต์  smoothํ–ˆ์Šต๋‹ˆ๋‹ค. 1 ์ฃผ์ผ์˜ ์ž‘์—…์ด ๊ฑธ๋ ธ์ง€๋งŒ, V1๊ณผ V2์— ๋น„ํ•ด ์ •๋ง๋กœ ์–ด๋ ค์šด ๊ฒƒ์ด ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค ๐Ÿš€

์กฐ์ง v4 - ๋ฏธ๋ž˜

์ด ๋ชจ๋“  ์–ด๋ ค์šด ์ž‘์—…์„ ํ†ตํ•ด, ์ด์ œ๋Š” ๋‹ค๋ฅธ ๊ฒƒ์„ ์ง‘์ค‘ํ•  ๋•Œ๊ฐ€ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ๐Ÿ˜Ž

์ด๊ฒƒ์€ ์‰ฌ์šด ์ผ์ด ์•„๋‹ˆ์—ˆ์ง€๋งŒ ๋‚˜๋Š” ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์› ๊ณ  capgo์€ ๋งค์šฐ ์ข‹์€ ๊ธฐ๋Šฅ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ๋ ˆ๊ฑฐ์‹œ ํ•จ์ˆ˜๋ฅผ deprecated ํ•ด์•ผํ•˜๊ณ  ์›น์•ฑ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•ด์•ผํ•˜๊ณ  ๋ฒ„๊ทธ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ฝ์–ด์ฃผ์…”์„œ ๐Ÿš€

A๋ถ€ํ„ฐ ์ƒˆ๋กœ์šด ์กฐ์ง ์‹œ์Šคํ…œ์œผ๋กœ ๊ณ„์† ๊ฐ€์„ธ์š”.

__CAPGO_KEEP_0__์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ณ„์‹ ๊ฐ€์š”. ์ƒˆ๋กœ์šด ์กฐ์ง ์‹œ์Šคํ…œ A API์„ ๊ณ„ํšํ•˜๊ณ  ๋Œ€์‹œ๋ณด๋“œ ๋ฐ API ์šด์˜์„ ์—ฐ๊ฒฐํ•˜์„ธ์š”. API ๊ฐœ์š” API ๊ฐœ์š”์˜ ๊ตฌํ˜„ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์†Œ๊ฐœ ์†Œ๊ฐœ์˜ ๊ตฌํ˜„ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. API ํ‚ค API ํ‚ค์˜ ๊ตฌํ˜„ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ๊ธฐ๊ธฐ ๊ธฐ๊ธฐ ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ํŒจํ‚ค์ง€ ํŒจํ‚ค์ง€ ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์— ๋Œ€ํ•œ

Capacitor ์•ฑ์— ๋Œ€ํ•œ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ

์›น-layer ๋ฒ„๊ทธ๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ, ์•ฑ ์Šคํ† ์–ด ์Šน์ธ ๋Œ€๊ธฐ ์—†์ด Capgo๋ฅผ ํ†ตํ•ด ํŒจ์น˜๋ฅผ ๋ฐฐํฌํ•˜์„ธ์š”. ์‚ฌ์šฉ์ž๋Š” ๋ฐฐ๊ฒฝ์—์„œ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›์œผ๋ฉฐ, ๋„ค์ดํ‹ฐ๋ธŒ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ผ๋ฐ˜์ ์ธ ๊ฒ€ํ†  ๊ฒฝ๋กœ์— ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ

๋ธ”๋กœ๊ทธ์—์„œ ์ตœ์‹  ์†Œ์‹

Capgo์€ ์ „๋ฌธ์ ์ธ ๋ชจ๋ฐ”์ผ ์•ฑ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ตœ๊ณ ์˜ๆดžๅฏŸ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.