๋์์ฑ ์ ์ด๋ ๋ฐ์ดํฐ ํธ๋์ญ์ ์ ์ผ๊ด์ฑ, ๋ฌด๊ฒฐ์ฑ ๋ฐ ๊ฒฉ๋ฆฌ๋ฅผ ๋ณด์ฅํ๋ฉด์ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ก์ธ์คํ๊ณ ์กฐ์ํ๋ ํ๋ก์ธ์ค๋ฅผ ๋งํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ์ฌ์ฉ์ ๋๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ํํ ์์ ์ ์ ์งํ๊ธฐ ์ํด ๋์์ ๋ฐ์ดํฐ ์ก์ธ์ค๋ฅผ ์์ฃผ ์์ฒญํ๋ ์ต์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ์์ ์ ๋๋ค. Concurrency Control์ ๋์ ๋ฐ์ดํฐ ์ก์ธ์ค๋ก ์ธํด ๋ฐ์ํ ์ ์๋ ์ถฉ๋, ๊ต์ฐฉ ์ํ ๋ฐ ๊ธฐํ ์ด์ ํ์์ ๋ฐฉ์งํ๊ณ ํธ๋์ญ์ ๊ฐ์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ ๋ฐ ๊ฒฉ๋ฆฌ๋ฅผ ์ ์งํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
๋์์ฑ ์ ์ด์ ์ค์์ฑ
๋ถ๊ท์นํ ์ก์ธ์ค ๋ฐ ์กฐ์์ผ๋ก ์ธํด ๋ถ์ผ์น ๋ฐ ์๋ชป๋ ๋ฐ์ดํฐ ๊ฐ์ด ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ค์ค ์ฌ์ฉ์ ํ๊ฒฝ์์ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ์ ์ ํ ๋์์ฑ ์ ์ด๊ฐ ์์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- Dirty Reads: ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ์ฌ์ฉ์์ ์๋ฃ๋์ง ์์ ํธ๋์ญ์ ์ด ์์ฑํ ์ปค๋ฐ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ฒฝ์ฐ.
- Non-repeatable Reads: ์ฌ์ฉ์๊ฐ ํธ๋์ญ์ ๋ด์์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ฝ์์ง๋ง ๋ค๋ฅธ ํธ๋์ญ์ ์ ๋์ ์ฐ๊ธฐ๋ก ์ธํด ๋ค๋ฅธ ๊ฐ์ ์ฐพ๋ ๊ฒฝ์ฐ.
- ํฌํ ์ฝ๊ธฐ: ํด๋น ๊ธฐ๊ฐ ๋์ ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ํ์ ์ฝ์ ํ๊ฑฐ๋ ์ญ์ ํ์ฌ ๋จ์ผ ํธ๋์ญ์ ๋ด์์ ์ฝ๋ ๋์ ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ป๋ ๊ฒฝ์ฐ.
- ์ ๋ฐ์ดํธ ์์ค: ๋์ ์ฐ๊ธฐ ํธ๋์ญ์ ์ด ๋ฐ์ดํฐ ํญ๋ชฉ์ ๋ํ ๊ฒฝํฉ์ ๊ณ ๋ คํ์ง ์๊ณ ์๋ก์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฎ์ด์ฐ๋ ๊ฒฝ์ฐ.
์ ๊ตฌํ๋ ๋์์ฑ ์ ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ณ ์ด๋ฌํ ์ด์ ํ์์ด ๋ฐ์ํ์ง ์๋๋ก ๋ฐฉ์งํ์ฌ ์ฌ์ฉ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ํํ ์ต์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์๋๋ก ํฉ๋๋ค.
๋์์ฑ ์ ์ด ๊ธฐ์
์ค์ ๋ก ์ฌ๋ฌ ๋์์ฑ ์ ์ด ๊ธฐ์ ์ด ์์ผ๋ฉฐ ๊ฐ๊ฐ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ธฐ์ ์ค ์ผ๋ถ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ ๊ธ: ์ด ๋ฐฉ๋ฒ์ ํ ํธ๋์ญ์ ์ด ์ก์ธ์คํ๊ฑฐ๋ ์์ ํ๋ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด(์: ํ ์ด๋ธ ๋๋ ํ)๋ฅผ ์ ๊ฐ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ ๊ธด ๊ฐ์ฒด๋ฅผ ๋์์ ์์ ํ์ง ๋ชปํ๋๋ก ํฉ๋๋ค. ๋ ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์ ํ์ ์ ๊ธ์ ๊ณต์ ์ ๊ธ(์ฌ๋ฌ ๋์ ์ฝ๊ธฐ ํธ๋์ญ์ ํ์ฉ)๊ณผ ๋ ์ ์ ๊ธ(๋จ์ผ ์ฐ๊ธฐ ํธ๋์ญ์ ์ ์ฌ์ฉ)์ ๋๋ค.
- ํ์์คํฌํ ๊ธฐ๋ฐ: ์ด ์ ๊ทผ ๋ฐฉ์์ ๊ฐ ํธ๋์ญ์ ์ ๊ณ ์ ํ ํ์์คํฌํ๋ฅผ ํ ๋นํ๊ณ ํธ๋์ญ์ ์ ํ์์คํฌํ์ ์ฐ์ ์์์ ๋ฐ๋ผ ๊ด๋ฆฌ๋ฉ๋๋ค. ํธ๋์ญ์ ๊ฐ์ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ๋ ์ด๋ฅธ ํ์์คํฌํ๋ฅผ ๊ฐ์ง ํธ๋์ญ์ ์ด ๋ ๋ฆ์ ํ์์คํฌํ๋ฅผ ๊ฐ์ง ํธ๋์ญ์ ๋ณด๋ค ์ฐ์ ํฉ๋๋ค.
- ๋๊ด์ ๋์์ฑ ์ ์ด(OCC): ์ด ๊ธฐ์ ์ ์ถฉ๋์ด ๋๋ฌผ๋ค๊ณ ๊ฐ์ ํ๊ณ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ์๋ํ๋๋ก ํ์ฉํฉ๋๋ค. ์ปค๋ฐ ๋จ๊ณ์์ ํธ๋์ญ์ ์ ๋ค๋ฅธ ํธ๋์ญ์ ์ผ๋ก ์ธํด ์ถฉ๋์ด ๋ฐ์ํ๋์ง ํ์ธํฉ๋๋ค. ์ถฉ๋์ด ๊ฐ์ง๋๋ฉด ํธ๋์ญ์ ์ด ์ค๋จ๋๊ณ ๋ณ๊ฒฝ ์ฌํญ์ด ๋กค๋ฐฑ๋ฉ๋๋ค.
- MVCC(Multi-version Concurrency Control): ์ด ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๋ฒ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๋์ ํธ๋์ญ์ ์ด ๋ค๋ฅธ ๋ฒ์ ์ ๋ฐ์ดํฐ์ ํจ๊ป ์๋ํ ์ ์๋๋ก ํฉ๋๋ค. ํธ๋์ญ์ ์ ์ํ ์ถ๊ฐ ๋๋ ์์ ์ ๋ฐ์ดํฐ ๊ฐ์ฒด์ ์ ๋ฒ์ ์ ์์ฑํ์ฌ ๊ฒฉ๋ฆฌ ๋ฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค.
๋์์ฑ ์ ์ด์ ์ ํฉํ ๊ธฐ์ ์ ์ ํํ๋ ๊ฒ์ ํธ๋์ญ์ ๋น๋, ์ถฉ๋ ๋น์จ, ์ํ๋ ์ฑ๋ฅ ๋ฐ ๊ฒฉ๋ฆฌ ์์ค๊ณผ ๊ฐ์ ์์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
AppMaster ์ ๋์์ฑ ์ ์ด
AppMaster ๋ ํ์ ์ ์ด๊ณ ๊ฐ์ํ๋ ์ ๊ทผ ๋ฐฉ์์ผ๋ก ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์๋ ๋ฐ์ด๋ ์ฝ๋ ์๋ ํ๋ซํผ์ ๋๋ค. ์ด ํ๋ซํผ์ ๊ตฌ์ถ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋์์ฑ ์ ์ด๋ฅผ ํฌํจํ์ฌ ๋ฐ์ดํฐ ์ผ๊ด์ฑ ๋ฐ ๋ณต์ก์ฑ ๊ฐ์๋ฅผ ์ ์งํ๊ธฐ ์ํด ์ฌ๋ฌ ๊ธฐ์ ์ ์ฌ์ฉํฉ๋๋ค. AppMaster ์ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ Go(Golang)๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๋๋ฉฐ ๋ชจ๋ PostgreSQL ํธํ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํจ๊ป ์๋ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. PostgreSQL ์์ฒด๋ ๊ฐ๋ ฅํ๊ณ ๊ฐ๋ ฅํ ๋์์ฑ ์ ์ด ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ๊ธฐ ์ํด ๋ค์ค ๋ฒ์ ๋์์ฑ ์ ์ด(MVCC)๋ฅผ ๊ตฌํํฉ๋๋ค.
AppMaster ์์ ์์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณธ์ง์ ์ผ๋ก PostgreSQL์ MVCC ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ํฅ์ ๋ฏธ์น๊ฑฐ๋ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ๊ฒช์ง ์๊ณ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ์๋ํ ์ ์๋๋ก ํฉ๋๋ค. ๋ํ ํ๋ซํผ์ REST API ๋๋ WSS ์๋ํฌ์ธํธ๋ฅผ ํตํด ์ด๋ฃจ์ด์ง ํธ๋์ญ์ ์ ๊ธฐ๋ณธ ๊ธฐ์ ์คํ์ ์ํด ์ํ๋๋ ๋์์ฑ ์ ์ด ๋ฉ์ปค๋์ฆ์ ์ค์ํฉ๋๋ค. ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์์ฑ๊ณผ ๊ด๋ จํ์ฌ AppMaster ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฉ Vue3 ํ๋ ์์ํฌ ๋ฐ JS/TS๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๊ณ , ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ Android์ฉ Jetpack Compose ๋๋ iOS์ฉ SwiftUI ์ฌ์ฉํ๋ Kotlin์ ์์ฑํฉ๋๋ค. ์ด๋ฌํ ๊ธฐ์ ์ ๊ฐ๋ฐ์์๊ฒ ๋์ ๋ฐ์ดํฐ ์ก์ธ์ค ๋ฐ ๋๊ธฐํ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๋ค์ํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ๋ฐ์๋ JavaScript์ฉ Promise ๋ฐ async/await ๋๋ Kotlin์ฉ ์ฝ๋ฃจํด ๋ฐ ํ๋ฆ๊ณผ ๊ฐ์ ๋๊ตฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํจํด์ ํ์ฉํ์ฌ ๋น๋๊ธฐ ์์ ์ ๊ด๋ฆฌํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ์ต์ ์ ์ฑ๋ฅ๊ณผ ์ผ๊ด๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๋ณด์ฅํ ์ ์์ต๋๋ค.
๋์์ฑ ์ ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์์ ์ค์ํ ์ญํ ์ ์ํํ์ฌ ์ฌ๋ฌ ์ฌ์ฉ์์ ์์ฉ ํ๋ก๊ทธ๋จ์์ ๋ฐ์ดํฐ ํธ๋์ญ์ ์ ์ผ๊ด๋๊ณ ์์ ์ ์ธ ๊ธฐ๋ฅ์ ๋ณด์ฅํฉ๋๋ค. ์๋ก ๋ค๋ฅธ ๊ธฐ์ ์ด ์๋ก ๋ค๋ฅธ ์์ค์ ๊ฒฉ๋ฆฌ ๋ฐ ์ผ๊ด์ฑ์ ์ ๊ณตํ์ง๋ง ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ์ ํํ๋ ๊ฒ์ ๊ธฐ๋ณธ ์์คํ ์ ํน์ ์๊ตฌ ์ฌํญ๊ณผ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. AppMaster ์ ํฌ๊ด์ ์ธ no-code ํ๋ซํผ์ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ PostgreSQL์ ๊ฐ๋ ฅํ MVCC ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ผ๊ด๋ ๋ฐ์ดํฐ ์ํธ ์์ฉ๊ณผ ์ฌ์ฉ์๋ฅผ ์ํ ์ํํ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋ณด์ฅํฉ๋๋ค.