ํ์ด๋ ํ๋ก์ ํธ ์ผ๋๋ฐ๋ค ํ๋ก์ ํธ๋ฅผ ์์ํ๊ฒ ๋๋ฉด์, ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ๊ฐ๊ฐ ๊ฐ์์ ํํธ๋ฅผ ๋๋๊ธฐ ์์ํ๋ค. ํ๋ก ํธ์๋๋ ํ์ด์ง ํ๋ฉด์ ์ค์ฌ์ผ๋ก ํํธ๋ฅผ ๋๋ ๊ฐ์ ๋งํฌ์ ๋จ๊ณ๋ฅผ ์์ํ๋ค.
์ฐ๋ฆฌ ๋ฐฑ์๋์์๋ ๋๋ฉ์ธ ๋จ์๋ก ๊ฐ์ ํํธ๋ฅผ ๋๋ด๋ค.
๊ทธ์ค ๋ ์ฑํ ๋๋ฉ์ธ์ ๋งก๊ฒ ๋์๋ค. ์ฐ๋ฆฌํ์ RDS๋ง์ ์ฌ์ฉํ๊ธฐ๋ก ํ๊ณ , DB๋ก๋ MySQL์ ์ฌ์ฉํ๊ธฐ๋ก ํ์๋ค.
์ด๊ธฐ ์ฑํ ๋๋ฉ์ธ์ ERD๋ฅผ ์ค๊ณํ๋ค. ๊ฐ์ฅ ํ์์ ์ธ ์์๋ง์ ๋ฃ์ด์ ํ์ ์์ฑํ๋ค.
๊ฐ ํ๋ฉด๊ตฌ์ฑ์ ๋ณด๊ณ ์ ์ฑ ์ ์ธ์ด ๋ค ํ์ ๋ ์ฑํ ๋๋ฉ์ธ ERD ์ค๊ณ์ด๋ค.
์ ์ฑ ์ ๋ฐ๊พธ์ด ๋ ์ฌ๋ฌ๊ฐ์ง ๊ธฐ๋ฅ์ ๋ฃ๋๋ค๋ฉด, ๋ฐ๊พธ๊ณ ์ถ์ ์์๋ค์ด ๋ง์ง๋ง, ํ์ฌ๊น์ง ์ ํด์ง ์ฌํญ์ ๋ง๊ฒ ์ต์ ํ๋ ERD ์ค๊ณ๋ผ๊ณ ์๊ฐํ๋ค.
๊ทธ์ ๊น์ง ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๊ตฌํ์๋ง ์ด์ ์ ๋ง์ท๋ค๋ฉด, ๋ฏธ๋ํ๋ก์ ํธ์ ํ์ด๋ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์, ์๋ฒ ์ธํ๋ผ ๋ด๋น๋ ๋๋ฉด์ ๊ฐ๋ฐํ๋๋ฐ์ ์์ด ๊ด์ ๊ณผ ๋ง์ธ๋ ๋ฐ๋์ด ์ด๊ฑธ ๊ธฐ๋กํ๊ณ ์ถ์ด ์ด๋ ๊ฒ ๊ธ์ ์์ฑํ๋ค.
์๋ฒ ๋ด๋น์๊ฐ ๋๋ฉด์ AWS ์๋น์ค๋ค์ ์ด์ฉํ๋, ์๋ฒ๋น์ฉ์ด ๋ถ๊ฐ๋๋ ๊ฑธ ๋ณด๊ณ ์์ํ๋ ๋ก์ง์ ์ง๋ฉด์๋ ๊ทธ๋ฅ ๊ตฌํํ๋๊ฒ ์๋๋ผ ๊ฒฝ์ ์ ์ธ ์ธก๋ฉด์ ๊ณ ๋ คํ๊ฒ ๋๋ค.
์๊ฐ๋ณต์ก๋๊ฐ ๋ ๋ฎ์ ๋ก์ง, DB I/O๋ฅผ ์ค์ด๋ ๋ฐฉ๋ฒ, ์๋ฒ์ ๋ถํ๋ฅผ ์ค์ด๋ ๋ฐฉ๋ฒ ๋ฑ ์ด๋ฐ ๊ฒ๋ค ๊ณ ๋ฏผํ๋ฉด์ ๋ก์ง์ ํ์คํ์ค ์์ฑํ๊ฒ ๋๋ค. ์ด๋ฌ๋ ์ผ๋ฐ์ ์ธ ์ฌ์ด ๋ก์ง๋ ๊ณ ๋ฏผํด๋ด์ผํ ์ฌํญ์ด ๋ง์์ ธ์ ์ฝ๊ฒ ๊ฒฐ์ ๋ด๋ฆฌ๊ธฐ ๋ชปํ์๋ค.
ํ์ง๋ง, ๋์ฑ ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ ํํํ ๊ฐ๋ฐ์ ํ๋ค๋ ์๊ฐ์ด ๋๋ ๋ณด๋์ฐจ๊ณ ๋๋ฆ ์๋ถ์ฌ๋ ๋๊ปด์ก๋ค.
๊ทธ๋ฌ๋ฉด ํฐ ์ฑํ ๋๋ฉ์ธ์ ์ด๋ป๊ฒ ์ค๊ณํ๊ณ ๋ก์ง์ ์๊ฐํ๋์ง ๊ณต์ ํ๊ฒ ๋ค.
์ด๊ธฐ ์ค๊ณ
๋จผ์ PM๋ถ๋ค์ด ๋ง๋ค์ด์ฃผ์ ํผ๊ทธ๋ง์ ์์ดํฐ ํ๋ ์์ ๋ณด๊ณ ํฌ๊ฒ ํ์ํ API ๊ฐฏ์๋ฅผ ์๊ฐํ๋ค. ํ์ ๊น์ง ์๋๋๋ผ๋ ์ต๋ํ์ผ๋ก ๋ด๊ฐ ๋ง๋ค์ด์ผํ API๋ฅผ ์๊ฐํ๊ณ ์ฑํ ๋๋ฉ์ธ ๋ด๋น ํ๋ก ํธ์๋ ๋ถ๊ป ์ด๋ ๊ฒ ์ด๋ ๊ฒ API๋ฅผ ํธ์ถํ์๋ฉด DTO์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ ๊ฒ ๋ด์์ ๋ณด๋ด์ค ๊ฒ์ด๋, ๋ ๋๋ง์์ ํ๋ฉด์ ์ด๋ ๊ฒ ๋ฟ๋ฆฌ์๋ฉด ๋ ๊ฒ ๊ฐ๋ค๊ณ , ํฐ ๊ทธ๋ฆผ์ผ๋ก ์ค๋ช ํด์ค๋ค. ์ด๋ SSR ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ํ๋ก ํธ์๋ ์ง์์ด ์กฐ๊ธ์ด๋๋ง ์๋๊ฒ ๋์์ด ๋๋ค.
API๋ ํฌ๊ฒ ์ฑํ ๋ฐฉ ์์ฑ, ์ฑํ ๋ฐฉ ์กฐํ, ์ฑํ ๋ฐฉ ์์ธ์กฐํ, ์ฑํ ๋ฐฉ ์์ , ์ฑํ ๋ฐฉ ์ญ์ ์ ๋๋ก ํฌ๊ฒ 5๊ฐ์ง๋ก ๊ณํ๋๋ค.
์ฑํ ๋ฐฉ ์์ฑ POST /v1/chats
๋จผ์ ์ฑํ ๋ฐฉ ์์ฑ์ด๋ค. ๊ฐ๊ฒฉ์ ์์ด ๊ฐ๋ฅํ ์ํ ๋ด์์ ๊ฐ๊ฒฉ์ ์์ ๋๋ฅด๋ฉด ์ฑํ ์ด ์์๋ ์ ์์ด์ผ ํ๋ค.
๊ทธ๋์ ๊ฐ๊ฒฉ์ ์ํ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ์ฑํ ๋ฐฉ ์์ฑ API๋ฅผ ํธ์ถํ๋๋ก ํ์๋ค.
์ด๋ ์ฃผ์ํด์ผํ๋ค๊ณ ์๊ฐํ ์ ์ ๊ฐ๊ฒฉ์ ์ํ๊ธฐ๋ฅผ ๋๋ฌ์ ์ฑํ ๋ฐฉ์ด ์์ฑ๋๋๋ฐ, ๋ ๋ค์ ์ํ ์์ธ์ ๊ฐ๊ฒฉ์ ์ํ๊ธฐ๋ฅผ ๋๋ฌ ์ฑํ ๋ฐฉ์ด ์ด์ค์ผ๋ก ์๊ธฐ์ง ์๊ฒ ํด์ผํ๋ค๊ณ ์๊ฐํ๋ค.
๊ทธ๋์ ์ํ์ id, ๊ตฌ๋งค์ id, ํ๋งค์ id 3๊ฐ์ง๋ก ์ฑํ ๋ฐฉ์ด ์๋์ง ์ฐพ์, ์์ผ๋ฉด ๊ทธ ์ฑํ ๋ฐฉ ์ฝ๋๋ฅผ ๋ฐ๋ก ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด์ฃผ๊ณ , ์๋ค๋ฉด ์๋ก์ด ์ฑํ ๋ฐฉ์ ๋ง๋ค์ด์ DB์ ๋ฃ๊ณ , ๊ทธ ์ฑํ ๋ฐฉ์ ํด๋ผ์ด์ธํธ์ ๋ณด๋ด์ฃผ๊ฒ ํ๋ค.
์ด๋ ์์ธ์ฒ๋ฆฌ๋ก๋ ์์ ์ ์ํ์ ์์ ์ด ๋ค๊ณ ํ ์ ์์ผ๋ฏ๋ก ๊ตฌ๋งค์์ ํ๋งค์ id๊ฐ ๊ฐ๋ค๋ฉด ์์ธ์ฒ๋ฆฌํด์ฃผ๊ณ , ๋ค๊ณ ๋ถ๊ฐ๋ฅ ์ ํ์ด๊ฑฐ๋, ์ํ์ ์ํ๊ฐ ํ๋งค์ค์ด ์๋ ๊ฒฝ์ฐ ์์ธ์ฒ๋ฆฌ ํด์ฃผ์๋ค.
์ฑํ ๋ฐฉ ์กฐํ GET /v1/chats
์ฑํ ๋ฐฉ ์กฐํ์ ์ฑํ ๋ฐฉ์ ์์ฝ ์ ๋ณด์ ์์ฝ์ ๋ฉ์์ง ์๋ฅผ Pageable ์ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธํํ ์ฃผ์๋ค.
์ด๋ ์ ๋ ฌ์์๋ ๊ฐ ์ฑํ ๋ฐฉ์ ๋ง์ง๋ง ๋ฉ์ธ์ง ๋ด๋ฆผ์ฐจ์ ์ฆ, ์ต์ ์์ด๋ค.
์ด ํ๋ฉด์์ ์ด๋ป๊ฒ ์ ์ฝ์ ๋ฉ์์ง ์๋ฅผ ์นด์ดํธ ํ๋์ง๊ฐ ํต์ฌ์ด์๋ค.
๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ๋ ์ฌ๋๋ค.
- ์ฑํ ๋ฉ์์ง ์ํฐํฐ์ readCount๋ผ๋ ํ๋๋ฅผ ๋์ด ๊ธฐ๋ณธ์ผ๋ก 2๋ฅผ ๊ฐ๊ฒ ํ๊ณ ์ฝ์๋๋ง๋ค 1์ฉ ์ฐจ๊ฐ์์ผ์ฃผ๋ ๋ฐฉ์
- ์ฑํ ๋ฉ์์ง๋ง๋ค ์ ์ก์๊ฐ์ ๊ฐ๊ณ , ์ฑํ ๋ฐฉ ์ํฐํฐ์ ํ๋งค์ ๋๋ ๊ตฌ๋งค์ ๋ง์ง๋ง ์ฑํ ๋ฐฉ ํ์ธ ์๊ฐ์ ๊ฐ์ ธ, ๋ง์ง๋ง ํ์ธ ์๊ฐ ์ดํ๋ก ์จ ๋ฉ์์ง๋ฅผ ์นด์ดํธ ํ๋ ๋ฐฉ์.
1๋ฒ ๊ฐ์ ๊ฒฝ์ฐ ๋ฉ์์ง๊ฐ ๋งค์ฐ ์ ์ ์ํฉ์์ ํฌ๊ฒ ๋ฌธ์ ์๊ฒ ์ง๋ง ๋ง์ ์ฌ์ฉ์๊ฐ ๋ง์ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค๋ ๊ฐ์ ํ์ ๋ ์ข์ง ์์ ์ค๊ณ ๊ฐ๋ค. ์ฝ์๋ ๋ง๋ค ์ฑํ ์ ์ฝ์์์ ํ์ํ๊ณ 1์ฉ ๊ฐ์์ํค๋ ์์ฒญ์ ๋ณด๋ด์ผํ๋ ๋จ์ ์ด ์๋ค๊ณ ์๊ฐํ๋ค. ๋ฉ์์ง ํ๋ ๋ง๋ค DB I/O๋ฅผ ํด์ ํ๋๋ฅผ ๊ฐ์์์ผ์ค์ผํ๋ฏ๋ก DB ์๋ ๋ง์ ๋ฌด๋ฆฌ๋ฅผ ์ฃผ๋ ํ์๋ผ๊ณ ์๊ฐํ๋ค. ๋ ์ดํ์ ๋งํ๊ฒ ์ง๋ง ์ฑํ ์ ์น์์ผ์ ์ฐ๊ฒฐํ์ฌ ์ค์๊ฐ ํต์ ์ ํ๋๋ฐ, ์ฝ์ ์ซ์ ๊ฐ์์ํค๊ธฐ ์ํ HTTP ์์ฒญ์ ๋ ๋ณด๋ด๋๊ฒ ์น์์ผ์ ์ฐ๋ ์๋ฏธ๋ฅผ ํด์์ํจ๋ค๊ณ ์๊ฐํ๋ค.
2๋ฒ ๊ฐ์ ๊ฒฝ์ฐ ๋งค๋ฒ ์ฝ์๋ค๊ณ ์ซ์๋ฅผ ๊ฐ์์ํค๋ ์์ฒญ์ ๋ณด๋ด์ง ์์๋ ๋๊ณ , ์ ์ฝ์ ๋ฉ์์ง ์๋ฅผ ์นด์ดํธ ํ๊ธฐ ์ํด์ ๋ฐ๋ณต๋ฌธ์ ํ์ผํ๋ ๊ฑด ๋๊ฐ์ผ๋ฏ๋ก 2๋ฒ์ด ํจ์ฌ ๊ฒฝ์ ์ ์ด๋ผ ์๊ฐํ๋ค.
๋จ์ ์ผ๋ก๋ ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ ์ฆ ์ฑํ ๋ฐฉ์์ ๋ฒ์ด๋ ๋ ๋ง์ง๋ง ์ฑํ ๋ฐฉ ํ์ธ์๊ฐ์ ์์ ํ๋๋ฐ, ๊ธฐ๊ธฐ๋ฅผ ๋๊ฐ ์ผ๋๊ณ ํ์ชฝ ๋ฐฉ์ ์ฑํ ์ ์ค์๊ฐ์ผ๋ก ์ฝ์ผ๋ฉด์ ์์ง๋ง, ๋ค๋ฅธ ๊ธฐ๊ธฐ์์ ์ฑํ ๋ฐฉ ๋ชฉ๋ก์ ์กฐํํ๋ฉด ์์ง ๋ง์ง๋ง ํ์ธ ์๊ฐ์ด ๊ฐฑ์ ๋์ง ์์๊ธฐ ๋๋ฌธ์ ์ฝ์ ๋ฉ์์ง๊ฐ ์์ฝ์ ๋ฉ์์ง ์๋ก ์นด์ดํธ ๋ ์ ์๋ค๋ ์ ์ด๋ค.
๊ฐ๊ฐ์ ํธ๋ ์ด๋์คํ๋ฅผ ํ์ ํ๊ณ , ํ์๊ฐ ์ข๋ ๊ฒฝ์ ์ ์ด๋ผ ์๊ฐํด์ ํ์์ ๋ฐฉ์์ผ๋ก ๋ก์ง์ ์งฐ๋ค.
์ฑํ ๋ฐฉ์ด ์ฑํ ๋ฉ์์ง๋ฅผ ๋ฆฌ์คํธ๋ก ๊ฐ๊ณ ์๋๋ฐ, ์ฒ์์ OrederBy ๋ก ์ ์ก์๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ๊ฐ๊ณ ์์๋ค.
์ ์ฝ์ ๋ฉ์์ง ์๋ฅผ ์นด์ดํธ ํด์ผํ๋๋ฐ, ์คํธ๋ฆผ์ ์ ๋ฐฉํฅ ์ํ ๋ฐ์ ์๋๋ฏ๋ก for๋ฌธ์ ์จ์ ๊ฐ์ฅ ์ต์ ๋ฉ์์ง๋ถํฐ ์ฆ ๋ฆฌ์คํธ์ ๋๋ถํฐ ์ฐจ๋ก๋๋ก ์์ผ๋ก ์ํํ๋ฉฐ isAfter() ํจ์๋ฅผ ์จ์ ๋ง์ง๋ง ํ์ธ ์๊ฐ๊ณผ ๋ฉ์์ง ์ ์ก์๊ฐ์ ๋น๊ตํ์ฌ ์ ์ฝ์ ๋ฉ์์ง ์ ์นด์ดํธ๋ฅผ ๋๋ ธ๋ค.
ํ์ง๋ง ๊ทธ๋ด ํ์ ์์ด, ์ฑํ ๋ฐฉ ์์ธ์กฐํ์์๋ ๊ฐ์ฅ ์ต๊ทผ ๋ฉ์์ง๋ถํฐ ์ค์ผ๋๊ณ , ์ ์ ์์ ์ฑํ ๋ฉ์์ง์์ OrederBy ์ ์ค๋ฆ์ฐจ์๊ณผ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ ๋ฆฌ์์ค ์๋ชจ๊ฐ ๋ค๋ฅด์ง ์๊ธฐ ๋๋ฌธ์ ์ ์ก๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ต์ ์, ์ฆ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐ๊พธ๊ณ , ์ ์ฝ์ ๋ฉ์์ง ์ ์นด์ดํธ๋ ์คํธ๋ฆผ์ ์จ์ ์ ๋ฐฉํฅ ์ํ๋ฅผ ํ์๋ค. ๋ง์ง๋ง ์ฑํ ๋ด์ฉ์ ๊ฒฝ์ฐ ๋ฆฌ์คํธ์ ์ฒซ๋ฒ์งธ(0๋ฒ์งธ) ๊ฐ์ ๋ณด๋ด์ฃผ์๋ค.
์ฑํ ๋ฐฉ ์์ธ์กฐํ GET /v1/chats/{chatRoomCode}
์ฑํ ๋ฐฉ ์์ธ์กฐํ๋ ์ฑํ ๋ฐฉ ์ฝ๋๋ฅผ PathVariable ๋ก ๋ฐ์ ์กฐํํ ์ ์๋๋ก ํ์๋ค.
๊ธฐ์กด์ ๋ชจ๋ ๊ฑธ id๋ก ์กฐํํ์์ง๋ง, ํ๋ผ์ด๋นํ ์ ๋ณด์ด๊ธฐ๋ ํ๊ณ , ์ค๋ฌด์์๋ ๊ณ ์ ํ ์ฝ๋๋ก ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฑธ ์๊ธฐ์ ์์ฑ์๊ฐ๊ณผ UUID ๋ฅผ ์ปค์คํ ํ์ฌ ์ฑํ ๋ฐฉ ์ฝ๋๋ฅผ ๋ง๋ค์๋ค.
์ฑํ ๋ฐฉ ๋ด์ ์์ ์ํ ์ ๋ณด๋ ํ๋ก ํธ์๊ฒ ์ํ ์์ธ์ ๋ณด API ํธ์ถํด์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ฒ ํ๊ณ , ์ฑํ ๋ด์ญ๋ง DTO์ ๋ฃ์ด์ ๋ณด๋ด์ฃผ์๋ค. ์ด๋ ๋ฉ์์ง์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฆฌ์คํธ๋ฅผ ๊ฐ๊ณ ์๊ธฐ์ size๋ ํ๋ก ํธ์ ํ์ ํ 20์ผ๋ก ์ค์ ํ๊ณ , 0๋ฒ์งธ๋ถํฐ 20๊ฐ ๋จ์๋ก ๋์ด์ Pageable์ ์ด์ฉํ์ฌ ๋ณด๋ด์ฃผ๊ณ , ํ๋ก ํธ์์ ํ๋ฉด์ ์๋์์ ๋ถํฐ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ๊ฐ๋ ํ์์ผ๋ก ๋ง๋ค์ด ๋ฌ๋ผ๊ณ ํ์๋ค.
ํนํ ๋ฆฌ์กํธ์์ map์ ๋๋ฆด๋ key๋ฅผ ๋ณด๊ณ ๋ ๋๋ง์ ํ๋๋ฐ, ๊ณ ์ ํ ํค๋ฅผ ๊ฐ์ ์ ์๋๋ก ์ ์ก์๊ฐ์ ๋ฐ๋ฆฌ์ด ๋จ์๊น์ง ๋ณด๋ด์ฃผ์ด ์๋ฌ ์์ด ๋ ๋๋งํ ์ ์๋๋ก ํ์๋ค.
๋ํ ํ๋ก ํธ ์ธก์์ ๋ก๊ทธ์ธํ ์ฌ๋์ id๋ฅผ ์๊ณ ์์ผ๋ฏ๋ก senderId๋ฅผ ์ฃผ์ด ๊ฐ์ผ๋ฉด ์ค๋ฅธ์ชฝ์ผ๋ก ์ ๋ ฌ ๋ค๋ฅด๋ฉด ์๋๋ฐฉ์ด๊ธฐ๋๋ฌธ์ ์ผ์ชฝ ์ ๋ ฌํด๋ฌ๋ผ ํ์๋ค.
์ค์๊ฐ์ผ๋ก ์ฑํ ์ ๋ณด๋ด๊ณ ๋ฐ๋ ๊ฒฝ์ฐ๋ ๋ค์ ๋ธ๋ก๊ทธ ๊ธ์์ ๋์ฑ ์์ธํ๊ฒ ๋ค๋ฃจ๊ฒ ๋ค.
์ฑํ ๋ฐฉ ์์ PUT /v1/chats
์ ์ฝ์ ๋ฉ์์ง ์๋ฅผ ์นด์ดํธ ํ๊ธฐ ์ํด์ ์ฑํ ๋ฐฉ ๋ง์ง๋ง ํ์ธ ์๊ฐ์ ์ฌ์ฉํ๊ธฐ๋ก ํ์๋ค. ์ด๋ ๋ง์ง๋ง ํ์ธ์๊ฐ์ ์์ ํด์ฃผ๋ ๊ฑธ ์ด ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ์ ๋๋ฅผ๋ ์์ ํ๊ธฐ๋ก ์ค๊ณํ๋ค. ์ ๋ฒํผ ์ธ์ ๋ค๋ฅธ ํ์ด์ง๋ก ๊ฐ ์ ์๋ ๋ฐฉ๋ฒ๋ ์์๊ณ , ๋ฆฌํ์คํธ๋ก ์ฑํ ๋ฐฉ ์ฝ๋๋ง์ ๋ฐ์๋ค. Spring Security์ Principal๋ก ๋ก๊ทธ์ธํ ์ฌ๋์ memberId๋ฅผ ๊ฐ์ ธ์์ ์ฑํ ๋ฐฉ์ ๊ตฌ๋งค์์ธ์ง ํ๋งค์์ธ์ง ๋น๊ตํ์ฌ ๊ตฌ๋งค์๋ฉด ๊ตฌ๋งค์ ๋ง์ง๋งํ์ธ์๊ฐ์ ์์ ํ๊ณ ํ๋งค์๋ฉด ํ๋งค์ ๋ง์ง๋ง ํ๋งค์๊ฐ์ ์์ ํด์ฃผ์๋ค.
์ฑํ ๋ฐฉ ์ญ์ DELETE /v1/chats
์ฑํ ๋ฐฉ ๋๊ฐ๊ธฐ๋ฅผ ํ๋ฉด ์ผ๋จ ํ๋งค์์ธ ๊ฒฝ์ฐ ๊ตฌ๋งค์๊ฐ ์ฑํ ๋ฐฉ์ ๋๊ฐ๋์ง ํ์ธํ๊ณ ์ ๋๊ฐ๋ค๋ฉด ํ๋งค์์ ํ๋๊ฐ๋ง true๋ก ์์ ํด์ฃผ์๋ค.
์ด์ ๋ ํ๋งค์๊ฐ ์ฑํ ๋ฐฉ ๋๊ฐ๊ธฐ๋ก ์ฑํ ๋ฐฉ์ ์ญ์ ํ๋๋ผ๋ ๊ตฌ๋งค์๊ฐ ์ญ์ ํ์ง ์์์ผ๋ฉด ๊ตฌ๋งค์๋ ์ฑํ ๋ฐฉ ๋ด์ฉ์ ํ์ธํ ์ ์์ด์ผํ๊ธฐ ๋๋ฌธ์ soft delete ํด์ค์ผ๊ธฐ ๋๋ฌธ์ด๋ค.
์๋๋ฐฉ๋ ์ญ์ ์ฌ๋ถ๋ฅผ ํ์ธํ์ฌ, ์๋๋ฐฉ๋ ์ญ์ ํ๋ค๋ฉด hard delete๋ฅผ ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ณต๊ฐ์ ํ๋ณดํ๊ณ , ๊ทธ๋ ์ง ์๋ค๋ฉด soft delete ํ๋ค. ๋ฐ๋ผ์ HTTP Method ๊ฒฝ์ฐ๋ POST์ ๋ ๊ฐ๊น์ธ ์๋ ์๋ค. ์ค๋ฌด์์๋ ๊ฑฐ์ ๋ชจ๋ ๋ฉ์๋๋ฅผ POST๋ฅผ ์ด๋ค๊ณ ํ์ง๋ง, ์ง๊ธ ๋๋ ๋ฐฐ์ฐ๋ ์ ์ฅ์ด๊ธฐ๋๋ฌธ์ ์ ์์ ๋ ๊ฐ๊น๊ฒ ํด๋ผ์ด์ธํธ ์ธก์์ ๋ฆฌ์์ค๋ฅผ ์ด๋ป๊ฒํ ๊ฑด์ง ์๊ธฐ ์ฝ๊ฒ DELETE๋ฅผ ์ฌ์ฉํ์๋ค.
์ฑํ ๋ฐฉ ์ญ์ ์ฌ๋ถ๊ฐ TRUE๊ฐ ๋๋ค๋ฉด ์ฑํ ๋ฐฉ ๋ชฉ๋ก ์กฐํ์์๋ ๋ณด์ด์ง ์๋๋ค.
๐ค ๋ ๊ฐ์ ํด๋ณผ๋งํ ์
์ง๊ธ ํ๋ก์ ํธ์์ RDS๋ง์ ์ฌ์ฉํ๊ธฐ๋ก ํ์๋ค. ํ์ง๋ง ํ๋ก์ ํธ๊ฐ ๋๊ท๋ชจ ํธ๋ํ์ ๊ฐ๋นํ๊ธฐ ์ํด MSA๋ก ์ ํ ๋๋ค๋ฉด ์ฑํ ์๋ฒ๋ฅผ ๋ฐ๋ก ๋๊ฒ ๋ ํ ๋ฐ, ์ฑํ ๋ฉ์์ง ๊ฒฝ์ฐ NoSQL ์ ๋น์ ํ ๋ฐ์ดํฐ๋ก์ ๊ด๋ฆฌํ๋ ๊ฒ ๋ ํ์ฅ์ฑ์ ์ฉ์ดํ ๊ฒ ๊ฐ๋ค. ๊ด๋ฆฌ์ ๋ฉ์์ง๋ ์ํ ์นด๋๋ ์ฑํ ์ผ๋ก ๋ณด์ฌ์ค๋ค๊ณ ํ๋ค๋ฉด, ์ง๊ธ์ ์ค๊ณ๋๋ก๋ผ๋ฉด senderId์ ๊ฐ์ ๋ฃ๊ธฐ ์ ๋งคํด์ง๋ค.
๋ค๋น๋ฐ์ ์ฑํ ์ ๋ณด์ด๋ ์ ์ฝ์ ์ฑํ ๊ฐฏ์๋ ์ฑํ ๋ฐฉ ๋ชฉ๋ก์์ ์์ฝ์ ์ฑํ ๋ฉ์์ง ์์ ํฉ์ฐ์ ๊ฐ์ด๋ค.
์ฐ๋ฆฌ๋ ์๋ฆผ์ผ๋ก FCM์ ์ฌ์ฉํ๊ธฐ๋ก ํ์๊ณ , ์ฑํ ์์๋ ์๋ฆผ์ผ๋ก FCM ํธ์์๋ฆผ์ ๋ณด๋ด๊ธฐ๋ก ํ์๋ค. ๋ฐ๋ผ์ FCM ์๋ฒ์์ ํด๋ผ์ด์ธํธ์ ์๋ต์ด ์ค๋ฉด ๊ทธ๋ ์๋ก์ด ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ฌ๊ธฐ์ ์ ์ฝ์ ๋ฉ์์ง ์๋ฅผ ์นด์ดํธํ ์ ์๋ API๋ฅผ ํธ์ถํ์ฌ ์ ๋ณด๋ฅผ ๋ฆฌํ๋ ์ฌ ํด์ฃผ๊ธฐ๋ก ์ค๊ณํ๋ค. ๊ทธ๋ฌ๋ฉด ์๋ฒ์ ๋ฌด๋ถ๋ณํ๊ฒ ๊ณ์ ์์ฒญ์ ๋ณด๋ผ์ผ๋ ์๊ณ , SSE ๊ฐ์ ์๋ฒ์์ ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ ๋ ๋ณด๋ด์ค ํ์๋ ์์ผ๋ ์๋ฒ ๋ถํ๋ ๋์ด๋ด ๊ฐ์ฅ ์ด์์ ์ธ ๋ฐฉ๋ฒ์ด๋ผ ์๊ฐํ๋ค.
ํ์ง๋ง ํ๋ก์ ํธ ๋ด FCM ์๋ฆผ ์๋น์ค๊ฐ ์ฌ์ฉ์์ ์ ํ์ ์ํด ON/OFF ํ ์ ์๊ฒ ๋์ด OFF๋ก ํ์์ ์ฑํ ๋ณด๋์ ๋ ์ค์๊ฐ์ผ๋ก ์๋ ค์ค ์ ์๋ ๋ฐฉ๋ฒ์ด ์ฌ๋ผ์ ธ ๋ฒ๋ ธ๋ค.
์ด๋๋ ์ ์ฝ์ ๋ฉ์์ง ์ ๋ฆฌํ๋ ์ฌ๋ ํ๋ง์ ์ฌ์ฉํ์ฌ 2์ด ๊ฐ๊ฒฉ์ผ๋ก ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ธฐ๋ก ํ์๋ค.
ํ ๋๋ฉ์ธ์ ๊ตฌํํด์ผ๊ฒ ๋ค๋ ๊ด์ ๋ณด๋ค ๋น์ง๋์ค์ ์ธ ๊ด์ ์ผ๋ก ๋ฐ๋ผ๋ณด๋ฉฐ, ์ฌ์ฉ์๊ฐ ์ดํํ์ง ์๊ฒ ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๊ฐ ์๋น์ค๋ฅผ ์ด์ฉํ๋ฉด์ ์ผ์ผํฌ ๋๋ฐ์ํฉ๋ค์ ์ฌ๋ฌ ์ผ์ด์ค๋ก ์ชผ๊ฐ๊ฐ๋ฉฐ ์ค๊ณ๋ฅผ ํ๊ณ ๋ก์ง์ ์ง๋ ์ทจ์ค์ ๊ฐ๋ฐ์๊ฐ ์๋๋ผ ์ ๋ง ์ค๋ฌด์์ ์ผํ๋ ๊ฐ๋ฐ์ ๊ฐ์ ๋๋์ด ๋ค์๋ค. ๋ฌผ๋ก ์ค๋ฌด์์ ๋์ฑ ๋นก๋นกํ ์ผ์ด์ค์ ์ฌ๋ฌ ๊ธฐ์์ฒ์ธํ ์์ธ์ํฉ์ด ๋ง์ํ ์ง๋ง, ์ด๋ฐ ๋ง์๊ฐ์ง๊ณผ ์์ผ๋ก ์๋น์ค๋ฅผ ๋ฐ๋ผ๋ณด๋ฉด ์ ํด๊ฒฐํ ์ ์์ ๊ฑฐ๋ผ๋ ์์ ๊ฐ๋ ๋ค๊ธฐ๋ ํ๋ค.
๋ค์์ ์ค์๊ฐ ์ฑํ ์ ๋ํด ์์ธํ ์ ๋ฆฌํ ๊ฒ์ด๋ค.(๊ฐ์ฅ ์ ๋ก์ฌํญ์ด ๋ง์๋....ใ ใ )
๋๊ธ