ํ๋ก์์ง๋ด(precedent_bot)
๐ค๐ง๐ฉ๐ปโโ๏ธ
ํธ์ํฐ ํ๋ก์์ง๋ด ๊ฐ์ธ ํ๋ก์ ํธ์ ๋ํ ๋ฌธ์์
๋๋ค.
ํ๋ก์ ํธ๋ ์ด 3๊ฐ์ ๋ ํฌ์งํ ๋ฆฌ๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ํธ์์ ๋ณธ ๋ ํฌ์ ํ๋ก์ ํธ์ ๊ดํ ๋ชจ๋ ๋ด์ฉ์ ๋ชจ๋ ์ ๋ฆฌํฉ๋๋ค.
๐ Repo/Stack
1. supreme-court-API
ํ๋ก๋ฅผ ์ ์ฅํ๋ DB์ REST API(ํ์ฌ ๋ ํฌ)
- Express.js(+TypeScript)
- TypeORM
- postgreSQL
- Jest
- pm2
- AWS EC2
- AWS Route 53
2. supreme-court-serverless
ํ๋ก ํฌ๋กค๋ฌ์ ํธ์๋ด์ firebase functions๋ฅผ ์ด์ฉํ ์๋ฒ๋ฆฌ์ค ์ํคํ ์ณ๋ก ๊ตฌํํ์ต๋๋ค.
- puppeteer
- node-twitter
- firebase functions
- firebase realtime database
- google cloud platform scheduler
3. tweet-bot-client
ํ๋ก์์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํ React ์ฑ์น์ ๋๋ค.
๐ Key Note
์ฃผ์ ๊ธฐ๋ฅ
- ํธ์๋ด์ ํธ์ํฐ ๊ณ์ ์ ํตํด ํ๋ฃจ์ 3๋ฒ ๋ํ๋ฏผ๊ตญ ๋ฒ์ ๋ฒ๋ น์ ๋ณด ์ฌ์ดํธ์์ ํฌ๋กค๋งํด์จ ํ๋ก์์ง ํ ๋จ๋ฝ์ ํธ์ํฉ๋๋ค.
- ํฌ๋กค๋ฌ๋ ๋ฒ๋ น์ ๋ณด ์ฌ์ดํธ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ด์ฐฐํ์ฌ ํ๋ก์ ๊ฐ์๊ฐ ๋์ด๋ ๊ฒฝ์ฐ์ ์๋ก์ด ํ๋ก๋ฅผ ํฌ๋กค๋งํด์ ๋ฐฑ์๋ ์๋ฒ๋ก POST ์์ฒญ, DB๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
- ํ๋ก์์ง ๋ด์ฉ์ ํธ์ํฐ๋ก ํธ์ํ ์ ์๋ ์ต๋ ๊ธ์์๋ฅผ ๋๊ธฐ๋ฏ๋ก, ๋ด์ ํธ์์๋ ํ๋ก์ ์ ๋ชฉ๊ณผ ํจ๊ฒ ํ๋ก์์ง ๋ด์ฉ์ ์กฐํํ ์ ์๋ ์น์ฑ์ ๋งํฌ๋ฅผ ๊ฐ์ด ํธ์ํฉ๋๋ค.
ํ๋ก์ ํธ ๊ตฌ์กฐ
์คํ, ๊ตฌํ ํฌ์ธํธ
์๋ฒ
- TDD๋ฅผ ๋์ ํ์ฌ, jest๋ฅผ ์ด์ฉํด ํ ์คํธ์ฝ๋๋ฅผ ์์ฑํ์ต๋๋ค. 4๊ฐ์ suite, 39๊ฐ์ ์ ๋ ํ ์คํธ๋ฅผ ํต๊ณผํ์ต๋๋ค.
- EC2์ ์ง์ postgreSQL์ ์ค์นํ์ฌ ๋ฐฐํฌํ์ต๋๋ค. ๋ฌด์ค๋จ ์๋น์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ํด pm2๋ ์ฌ์ฉํ์ต๋๋ค.
- generic, @types, global, class ๋ฑ TypeScript์ ๋ค์ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ต๋๋ค.
- ์ด ํฌ์คํ ์ ์ฐธ๊ณ ํ์ฌ monolithicํ ํ๋ก์ ํธ ํด๋ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถํ๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค.
- ๋๋ฉ์ธ์ ๊ตฌ์ ํ๊ณ AWS์์ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ๋ฐ์ https๋ฅผ ์ ์ฉํ์ต๋๋ค.
์๋ฒ๋ฆฌ์ค
- firebase functions๋ก ์๋ฒ๋ฆฌ์ค ํจ์๋ฅผ ๋ฐฐํฌํ๊ณ , GCP scheduler๋ก ์ค์ผ์ฅด๋งํ์ต๋๋ค.
- Headless ๋ธ๋ผ์ฐ์ puppeteer์ ์ฌ์ฉํด ์๋ฒ๋ฆฌ์ค ํฌ๋กค๋ง ๋ด์ ๊ตฌํํ์ต๋๋ค.
- twitter developer API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฑ์๋์์ ๋ด์ฉ์ ๋ฐ์ ํธ์ ๋ด์ ๊ตฌํํ์ต๋๋ค.
- class ๋ฌธ๋ฒ์ ํตํด ๊ฐ๊ฐ์ ์๋ฒ๋ฆฌ์ค ํจ์์ ํ์ํ ๋์๋ค๊ณผ ์์๋ค์ ๋ถ๋ฆฌํ์ต๋๋ค.
ํด๋ผ์ด์ธํธ
- Create React App์ ์ฌ์ฉํ์ฌ ๋น ๋ฅด๊ฒ ๋ฆฌ์กํธ ์ฑ์ ๊ตฌ์ถํ์ต๋๋ค.
- React.lazy, suspense๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ ์คํ๋ฆฌํ ์ ๊ตฌํํ์ต๋๋ค.
- Redux๋ฅผ ์ด์ฉํด ์ํ๊ด๋ฆฌ๋ฅผ, Redux Saga๋ฅผ ์ฌ์ฉํด ๋น๋๊ธฐ ๋ก์ง์ ์ฝ๊ฒ ์์ฑํ ์ ์๋๋ก ํ์ต๋๋ค.
- redux store๋ฅผ ์ด์ฉํ fetchEntity ํจํด์ ๋์ ํด ๋น๋๊ธฐ ๋ก๋ฉ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ์ต๋๋ค.
- vercel์ ์ด์ฉํด ๋ฐฐํฌํ์ต๋๋ค.
- ํธ์ํฐ ํฌ์คํ ์์ ์ธ๋ค์ผ ๋ฑ์ด ์ ๋๋ก ๋ํ๋ ์ ์๋๋ก ๋ฉํํ๊ทธ๋ฅผ ์ปค์คํ ํ์ต๋๋ค.
์์ผ๋ก ์ ๋ฐ์ดํธ
- DB์ ์๋ ํ๋ก ์ ๋ณด๋ค์ ๊ตฌ์กฐํ๋ pdf๋ก ๋ด๋ณด๋ผ ์ ์๋ ์๋ฒ๋ฆฌ์ค ํจ์ ์ถ๊ฐ(ํ๋ก ๋ด์ฉ์ ์ฑ ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด)
- ๋ฒ๋ค๋งํ๊ธฐ
- ์ฌ์ด ๋ฐฐํฌ๋ฅผ ์ํ CI/CD ๊ตฌ์ฑํ๊ธฐ
- docker ์ ์ ํ๊ธฐ
- RDS๋ก DB์ด๊ดํ๊ธฐ
- firebase์ ์๋ ํฌ๋กค๋ฌ๋ค lambda๋ก ์ด๊ดํ๊ธฐ