์๊ฐ
์๋ ํ์ธ์, ์ ๋ 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 ํค์ ๊ตฌํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ฐธ์กฐํ์ธ์. ๊ธฐ๊ธฐ ๊ธฐ๊ธฐ ๊ตฌํ ์ธ๋ถ ์ฌํญ์ ๋ํ ํจํค์ง ํจํค์ง ๊ตฌํ ์ธ๋ถ ์ฌํญ์ ๋ํ