์ง์2n์ ์ธ์์ ๋ชจ๋ ์ง๋ฌธ์๋ ๋ต๋ณ์ด ์๋ค๋ ์บ์นํ๋ ์ด์ฆ๋ฅผ ๊ฐ์ง, ์ง๋ฌธํ๊ณ ๋ต๋ณํ๋ ์ฑ์
๋๋ค.
์ด๊ณณ์์ ์ฌ๋ฌ๋ถ๋ค์ ์ด๋ ํ ๊ถ๊ธํ ๊ฑฐ๋ผ๋ ์ง๋ฌธํ ์ ์๊ณ , ๋ด๊ฐ ์๊ณ ์๋ ์ด๋ค ์ง์๋ ๋ต๋ณ์ ๋ฌ ์ ์์ต๋๋ค.
์ด๋ฆ์ ์ ๋๋ '์ธ์์ ์ง๋ฌธ์ด n๊ฐ ์๋ค๋ฉด, ๊ทธ์ ๋ํ ๋ต๋ณ๋ n๊ฐ ์์ง ์์๊น?'
'๊ทธ๋ ๋ค๋ฉด ์ด 2n๊ฐ์ ๊ธ์ด ๋ฌ๋ฆฌ์ง ์์๊น?'์์ ์์ํ์ต๋๋ค.
Team2์์ ๋ง๋ ๊ณต๊ฐ์์ ์ฆ๊ฒ๊ฒ ๋ฐ์ด๋์ ์ฃผ์ธ์.
Spring developer: ์ฐํ์ค, ์ด์ง์, ์กฐ์ฑ๊ท
iOS developer: ๊น๋ น๊ต, ๋ฐ์ ํ, ๋ฐ์ฑํ, ํํฌ์ฃผ
ํต์ฌ์ ์ธ ๊ธฐ๋ฅ๋ค์ ์ถ๋ฆฐ ์ํฌํ๋ก์ฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Branch ์ด๋ฆ | ๋ด์ฉ |
---|---|
main | ์ค์ ๋ฐฐํฌ branch |
develop | ๊ฐ๋ฐ ๋ฒ์ branch |
feature | ๊ธฐ๋ฅ ์ถ๊ฐ |
hotfix | ๋ฒ๊ทธ ์์ |
ci_cd | CI/CD ๊ด๋ จ ์ค์ |
์ง์2n์ ์ง๋ฌธํ๊ณ , ๋ต๋ณํด์, ๋ฐ์ํ๊ธฐ์ ํต์ฌ ๊ธฐ๋ฅ์ผ๋ก ํ๋ฉฐ, ๊ทธ๋ฐ์๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์์ฐ์์๋ ์ง์ ๋๋์ผ๋ก ๋ณด์ฌ๋๋ ธ์ง๋ง, ๋ค๋ฅธ ํ๊บผ ๋ณธ๋ค๊ณ /์ง์ ๋ฐํํ๋ค๊ณ /๊ฐ์ธ์์ ์ผ์ ๋๋ฌธ์ ๋ฑ๋ฑ์ ์ด์ ๋ก ๋ชป ๋ณธ ๋ถ๋ค์ ์ํด!
์ง์2n ์ฌ์ฉ ์ค๋ช
์์์ ์ง์2n์ ์ด๋ค ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์๋์ง ๊น๋ํ๊ฒ ์ค๋ช
ํด๋๋ฆฌ๊ฒ ์ต๋๋ค ๐
(์ฌ๋ด์ผ๋ก, ์ง์2n๋ง์ ์ถ๊ฐ ๊ธฐ๋ฅ์ผ๋ก๋ ์ง๋ฌธ์ ๊ณต๊ฐ, ๊ณต๊ฐ์ ์ ๋ ฌ, ๋๋ค์ง๋ฌธ ๋ฑ์ด ์์ต๋๋ค!)
์ง์2n์ ํต์ฌ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด์ธ์๋ ๋ค์๊ณผ ๊ฐ์ด ๋ค์ํ ๊ธฐ๋ฅ์ ๋ด์์ต๋๋ค.
์ง์2n์ ๋ง๋ค๋ฉด์ ๊ธฐ๋ฅ์ ์ผ๋ก ์ฌ๋ฌ ๋๊ด์ ๊ฒช์์ต๋๋ค.
์ฒ์์ ๋๊ด์ ๋ง๋ฌ์ ๋๋ ๋นํฉํ์ง๋ง, ๊ตฌ๊ธ๋ง๋ ํ๊ณ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ์ง์์ ๊ณต์ ํ๋ฉด์ ๋๊ด๋ค์ ํ๋์ฉ ๊ทน๋ณตํด๊ฐ์ต๋๋ค.
๊ทธ๋ฌํ ์๋ จ๊ณผ ๊ทน๋ณต์ ๊ฑฐ์น ๋์, ์ด๋ ๊ฒ ์๋์ค๋ฌ์ด ์ฑ์ด ํ์ํ ์ ์์์ต๋๋ค.
์๋์ ๊ธ๋ถํฐ๋, ์ง์2n์์ ์๋ํ๊ณ ์ถ์ ๋ด์ฉ์ ํ๋์ฉ ์ง์ด๊ฐ๋ฉฐ ์๊ฐํ๊ณ ์ ํฉ๋๋ค.
Team2 ๋ฆฌ๋๋ฏธ์ ํ์ด๋ผ์ดํธ๋ผ๊ณ ๋ณผ ์ ์์ ๊ฒ ๊ฐ๋ค์:blush:
๊ทธ๋ฌ๋ฉด ์ง๊ธ๋ถํฐ ์์ํ๊ฒ ์ต๋๋ค!
(์๋์ ์ฌ์ง๋ถํฐ๋ ๋ฐํ ์๋ฃ๋ก, ๋ฐํ ์๋ฃ๋ฅผ ๋ณด๊ฐํ๋ ๋ด์ฉ์ ๊ธ๋ก ์ ๋๋ก ํ๊ฒ ์ต๋๋ค.)
์ํ ํ ์ดํ๋ก์ ํธ๋ฅผ ๋ง๋ค๋ฉฐ ํ์์ ์ผ๋ก ๋์
ํ๋ผ๊ณ ํ ์์ ์ค ํ๋์๋ ์์
๋ก๊ทธ์ธ!
์ง์2n์์๋ ๋ค์ํ ์์
๋ก๊ทธ์ธ ์ค ์นด์นด์ค ๋ก๊ทธ์ธ์ ๋์
ํ์์ต๋๋ค.
๋ฐํ ์๋ฃ์์ ๋์ํ๋์ด ์๋ ๋ด์ฉ์ ์กฐ๊ธ ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์ค๋ช
ํ์๋ฉด,
์ ํฌ๋ ๋จผ์ Kakao Developer์ ์ง์2n์ฑ์ ๋ฑ๋กํ๊ณ , iOS๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ ์๊ธฐ ๋๋ฌธ์ iOS ํ๋ซํผ์ ๋์
ํ์์ต๋๋ค.
์นด์นด์ค ๋ก๊ทธ์ธ์ ํ ํฐ์ ํตํด ์ธ์ฆ์ด ์ด๋ฃจ์ด์ง๋๋ฐ,
iOS๋ ์นด์นด์ค ํ ํฐ์ ๋ฐ์->๋ฐ์ ์นด์นด์ค ํ ํฐ์ ์คํ๋ง์ ์ ๋ฌ->
์คํ๋ง์ ๋ค์ ์นด์นด์คํํ
ํ ํฐ์ ์ค์ ์ ์ ์ ๋ณด๋ฅผ ์ ๋ฌ๋ฐ์->์ ๋ฌ๋ฐ์ ์ ์ ์ ๋ณด๋ฅผ ์คํ๋ง db์ ์ ๋ฌ
์์๋ก ๋ก๊ทธ์ธ์ด ์งํ๋ฉ๋๋ค.
๋ง์ฝ ์นด์นด์ค ๋ก๊ทธ์ธ์ ํ๋ฒ๋ ํ์ง ์์ ํ์์ด๋ผ๋ฉด db์ ์๋ก์ด ์ ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ,
์ด์ ์ ์นด์นด์ค ๋ก๊ทธ์ธ์ ํ๋ ์ ์ ๋ผ๋ฉด db์ last_login ์นผ๋ผ์ ํ์ฌ ์๊ฐ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ด ๊ณผ์ ์ ํตํด, ์ง์2n์ ์นด์นด์ค ์ ์ ๋ค์ด ๊ฐํธํ๊ฒ ์ฑ์ ์ฌ์ฉํ ์ ์๋๋ก ํ์์ต๋๋ค.
๋ต๋ณํ๊ธฐ, ๋์์ง๋ฌธ ๋ฑ ์ง์2n์์๋ ๋ค์ํ ์ง๋ฌธ์ ๋ค๋ฃจ์ด์ผ ํ๊ธฐ ๋๋ฌธ์, ๊ธฐ์ค์ ๋ฐ๋ฅธ ์ ๋ ฌ๊ณผ ํ์ด์ง๋ค์ด์
์ด ์ค์ํฉ๋๋ค.
์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํด QueryDsl์ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ์์ต๋๋ค.
orderBy์ desc๋ฅผ ํตํด ์ต์ ์, ์ข์์์, ๋ต๋ณ์์์ ํตํด ์ง๋ฌธ๋ค์ ์ญ๋ฐฉํฅ์ผ๋ก ์ ๋ ฌํ์์ผ๋ฉฐ(๋ต๋ณ์์์ ์ฑ ๋ด์์๋ ๋ฏธ๋ฐ์)
offset(page*amount), limit(amount)๋ฅผ ํตํด ๊ฐ ํ์ด์ง์์ ์ฒซ๋ฒ์งธ ๊ธ๋ถํฐ amount ๋ฒ์งธ๊น์ง์ ๊ธ์ ๋ถ๋ฌ์ค๋๋ก ํ์์ต๋๋ค.
Https๋ Http์ SSL ๋ณด์์ ์น์ ๊ฒ์ผ๋ก, Http์ ๋นํด ๋ณด์์ฑ๊ณผ ์ฌ์ดํธ ๋ก๋ฉ ์๋๊ฐ ๋ฐ์ด๋ฉ๋๋ค.
์ง์2n์ Https ๊ตฌํ์ ์ค๋ช
ํ๊ธฐ ์ํด์๋ ๋จผ์ ์ ํฌ์ ๋ฐฐํฌ ๋ฐฉ์์ ๋ํด ์์๋์ด์ผ ํฉ๋๋ค.
์ ํฌ๋ AWS์ Elastic Beanstalk๋ฅผ ํตํด ๋ฐฑ ์๋ฒ๋ฅผ ๋ฐฐํฌ์์ผฐ์ต๋๋ค.
Elastic Beanstalk๋ EC2(์ธ์คํด์ค), RDS(๋ฐ์ดํฐ๋ฒ ์ด์ค) ๋ฟ๋ง์ด ์๋๋ผ
์ฑ ๋ฐฐํฌํ ์ต์ ํ๋ฅผ ์ํด ํ์ํ ๋ก๋ ๋ฐธ๋ฐ์, ํ๋ก๋น์ ๋, ์คํ ์ค์ผ์ผ๋ง ๋ฑ์ ์์
๋ค์ ์๋์ผ๋ก ํด์ค๋๋ค.
๊ทธ๋ก ์ธํด, ๋ค์ํ ํญ๋ชฉ์ ์๋ค๊ฐ๋ค ํ์ง ์์ ์ฑ ๋น๊ต์ ๊ฐ๋จํ๊ฒ ์ฑ์ ๋ฐฐํฌํ ์ ์์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ Elastic Beanstalk๋ฅผ ํ์ฉํ ๋ฐฐํฌ์ Https๊ฐ ๋ฌด์จ ์๊ด์ด๋๊ณ ์?
Elastic Beanstalk์ ๋ค์ํ ์ต์ ํ ์ค ์ฐ๋ฆฌ๋ ๋ก๋ ๋ฐธ๋ฐ์์ ์ฃผ๋ชฉํด์ผ ํฉ๋๋ค.
๋ก๋ ๋ฐธ๋ฐ์๋ ํธ๋ํฝ์ด ๋ง์ ์๋ฒ์ ๊ณผ๋ถํ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ํธ๋ํฝ์ ์ฌ๋ฌ ์๋ฒ์ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐํ๋ ์ญํ ์ ํ๊ณ ์์ต๋๋ค.
Https์ ์ฐ๊ฒฐํ๊ธฐ ์ํด์, ์ ํฌ๋ ๋จผ์ ๊ฐ๋น์๋ผ๋ ์ฌ์ดํธ์์ Https ๋๋ฉ์ธ์ ๊ตฌ๋งคํ์์ต๋๋ค.
๊ตฌ๋งคํ ๋๋ฉ์ธ์ AWS์ Route 53์ ๋ฑ๋กํ ์ดํ, DNS๋ฅผ Elastic Beanstalk์ ๋ก๋ ๋ฐธ๋ฐ์์ ์ฐ๊ฒฐ์์ผฐ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ Amazon Certificate Manager๋ฅผ ํตํด ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ๋ฐ์ Beanstalk๊น์ง์ ์ฐ๊ฒฐ์ Https๋ก ์ฐ๊ฒฐ๋๋๋ก ํ์์ต๋๋ค.
Interceptor๋ Request๋ฅผ ์ปจํธ๋กค๋ฌ์ Handler๋ก ๋ค์ด์ค๊ธฐ ์ ์ ๋์์ฑ์ด ์ํ๋ ๋ก์ง์ ์ํํ ํ Handler๋ก ๋ณด๋ด๋ ์ญํ ์ ํฉ๋๋ค.
์ ํฌ ํ์ ์ด๋ฐ์๋ ์ฃผ๋ก Interceptor์๊ฒ Authorization์ ์ญํ ์ ์ํ์์ผ,
ํ ํฐ์ ๋ฐ์ผ๋ฉด ํด๋น ํ ํฐ์ ์ ์ ์ ๋ณด๊ฐ ์๋์ง ๊ฒ์ฆํ๊ณ , ๋ง์ฝ ํ๋ ธ๊ฑฐ๋ ํ ํฐ ์์ฒด๊ฐ ์๋ค๋ฉด ์์ธ๋ฅผ ๋ฐํ์์ผฐ์ต๋๋ค.
ํ์ง๋ง ๊ฐ๋ฐ์ ํ ์๋ก ์ด๋ฌํ ๋ก์ง์๋ โ๋ฌธ์ โ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์์ ๋งํ๋ฏ Authorization์ Interceptor๋ ํ ํฐ์ด ์์ผ๋ฉด ์์ธ๋ฅผ ๋ฐํ์ํค๋๋ฐ,
๋ง์ฝ ํ ํฐ์ด ์๋ ์๋ ๊ฐ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ์ ๋ด๋์์ผ ํ๋ค๋ฉด ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ ๊น์?
๊ฐ๋ น โค๏ธํํธ ์๊น์ ๋ํด์๋ ์๋ฅผ ๋ค์ด๋ด
์๋ค.
์์ธ์ง๋ฌธ์๋ ๋ชจ๋ ์ ์ ๊ฐ ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ์ข์์๋ฅผ ๋๋ฅธ ์ ์ ๋ ํํธ๊ฐ ๋ถํ์์ผ๋ก ์น ํด์ ธ์ผ ํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด, ๋ก๊ทธ์ธํ์ง ์์ ์ ์ ๋ ๋ก๊ทธ์ธํ ์ ์ ๋ ๋ชจ๋ ๋ฐ์์ผํ์ง ์์๊น์?
์ด๋ฐ ๊ฒฝ์ฐ์๋ ํ ํฐ์ ์ ๊ณตํ์ง ์๋ ์ ์ ์๊ฒ๋ ์์ธ๋ฅผ ๋ฐํํ๋ ๊ธฐ์กด์ ๋ฌธ์ ๋ก๋ ํด๊ฒฐ์ ํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ด ์ํฉ์ ์ด๋ป๊ฒ ํด๊ฒฐํด์ผ ํ ๊น์?
์ ํฌ๋ ์ด๋ฐ ์ํฉ์ ํด๊ฒฐํ๊ธฐ ์ํด ๊ธฐ์กด์ Interceptor๋ฅผ ๋ถํ์์ผ AuthInterceptor1, AuthInterceptor2๋ก ๋ ๊ฐ๋ฅผ ๋ง๋ค์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ AuthInterceptor1์์๋ ๋ชจ๋ Api์ ์ ๊ทผํ์ฌ ํ ํฐ์ด ์๋ค๋ฉด ์ ์ ์ ๋ณด๋ฅผ, ํ ํฐ์ด ์๋ค๋ฉด null์ ๋ฐํํ๋๋ก ํ์๊ณ ,
AuthInterceptor2์์๋ ํน์ Api์ ์ ๊ทผํ์ฌ ์ ์ ์ ๋ณด๊ฐ ์๋ค๋ฉด ๋ก์ง์ ์คํ์ํค๋๋ก, null๋ง ์๋ค๋ฉด ์์ธ๋ฅผ ๋ฐํํ๋๋ก ํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด์ ์๋, ๋ง๋ฃ๋ ํ ํฐ์ 401 ์์ธ๋ฅผ ๋ฐํ(401 ๋ฐํ ์ฆ์ ํ๋ก ํธ์์ ์ฌ๋ฐ๊ธ ์์ฒญ)์ํค๋ ์ผ๊ณผ
ํํดํ ์ ์ ์ ํ ํฐ์ ์ ๊ทผ์ด ์๋๊ฒ ํ๋๋ก ํ๋ ์ผ์ AuthInterceptor1์๊ฒ ๋งก๊ฒผ์ต๋๋ค.
์ด๋ฌํ ๊ณผ์ ์ ํตํด, ์ง๋ฌธ๋ฑ๋ก/๋ต๋ณ์์ /ํ๋กํ์์ ๋ฑ Authorization์ด ํ์ํ ์ผ๊ณผ
ํํธ์๊น/์ฑํํ๊ธฐ๋ฒํผ๋ฑ์ฅ ๊ฐ์ด Authentication๋ง ํ์ํ ์ผ ๋ชจ๋๋ฅผ ํ๋ฅญํ๊ฒ ์ํํ์์ต๋๋ค.
์ง์2n์ ์ฒ์ ์ฐ๋ ๋ถ๋ค์ด ์ ์ผ ๋จผ์ ๋ง๋๋ ํํ๋ฉด!
ํํ๋ฉด์ ์๋จ์ 4๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ์์ผ๋ก ์ค์์ดํํ ์ ์๊ณ , ํ๋จ์์๋ ๋์ ์ง๋ฌธ๋ค์ ์๋๋ก ์ค์์ดํํ๋ฉฐ ํ์ธํ ์ ์์ต๋๋ค.
์ด๋ป๊ฒ ํ ํ๋ฉด์ ๋ ๋ฐฉํฅ์ ์ค์์ดํ๊ฐ ๊ฐ๋ฅํ ๊น์?
์ด๊ฑธ ์ํด์ ์ ํฌ๋ ํ๋์ ํ๋ฉด์ ๋๊ฐ์ ๋ค๋ฅธ View๋ฅผ ๊ฑธ์ด๋จ์ต๋๋ค.
์๋จ์ View์์๋ ScrollView๋ฅผ ๊ฑธ์ด๋จ๊ณ , ๊ทธ ์์ 4๊ฐ์ ์ด๋ฏธ์ง๋ฅผ StackView๋ก ๋ฌถ์ด๋ StackView๋ฅผ ScrollView ์์ ๋ฃ์์ต๋๋ค.
ScrollView๋ ์๊ธฐ๋ณด๋ค ํฐ ์ด๋ฏธ์ง๊ฐ ๊ฑธ๋ ค์์ผ๋ฉด ์คํฌ๋กค์ ํ ์ ์๊ธฐ ๋๋ฌธ์, ๋์ด๋ ๊ฐ๊ณ ๊ฐ๋ก๋ก๋ง ๊ธด StackView๋ ํก์คํฌ๋กค์ ํ๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ฉด์ ์๋์ชฝ์ ์๋ ๋์ ์ง๋ฌธ์ TableView๋ฅผ ๊ฑธ์ด๋์์ต๋๋ค.
๊ฐ๊ฐ์ ์ง๋ฌธ๋ค์ด ๋ง์น ๋ณด์ด์ง ์๋ ์ ์ผ๋ก ์ด๋ค์ง ํ์ฒ๋ผ ์๊ฒผ๋๋ฐ์.
TableView๋ ํ๋ฉด์ ๋๊ธฐ๋ฉด ์๋์ผ๋ก ์คํฌ๋กคํ ์ ์๊ธฐ ๋๋ฌธ์ ์ง๋ฌธ์ด ๋ง์ด ์์ด๋ฉด ์๋๋ก ์ค์์ดํ๋ฅผ ํ ์ ์๊ฒ ๋ฉ๋๋ค.
์ง์2n์ ๋ง๋๋ ๋ฐ์ ๊ฐ์ฅ ํฐ ๋๊ด์ด์๋ ์ฌ์ง ์
๋ก๋!
์ ํฌ๋ ์ง๋ฌธ๋ฑ๋ก/๋ต๋ณ๋ฑ๋ก/ํ์ฌ ์์ ์ ์ฌ์ง ์
๋ก๋๊ฐ ํ์ํ์๊ณ ,
๊ทธ๋ฌํ ์ฌ์ง๋ค์ ์ ์ฅํ๊ธฐ ์ํด AWS์์ ์ ๊ณตํ๋ ํ์ผ ์๋น์ค์ธ S3์ ์ฌ์ฉํ์์ต๋๋ค.
S3์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์๋ฒ์ S3 ๊ฐ์ ํต์ ์ด ์ค์ํ๋ฐ, ์ด๋ฅผ ์ํด S3 ๋ฒํท์ ๋ง๋ค๊ณ ์คํ๋ง ์๋ฒ์ ์ฐ๊ฒฐํ์์ด์.
์ฌ์ง์ ๋ณด๋ด๊ธฐ ์ํด์ iOS์์ ๊ฐ๊ณ ์๋ ์ฌ์ง์ ์คํ๋ง์ ๋๊ธฐ๊ณ ,
์คํ๋ง์ ๋ค์ ๊ทธ๊ฑธ S3์ ๋๊ฒจ์ ํ์ผ ์ด๋ฆ์ ์ ๋ฌ๋ฐ๋ ๊ณผ์ ์ด ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค.
์ ํฌ๋ ํ๋กํ ์ฌ์ง์ ์ถ๊ฐํ ๋๋ ๋จ๋
์ผ๋ก, ์ง๋ฌธ์ ์ฌ์ง๋ค์ ์ฌ๋ฆด ๋๋ ์ฌ์ง ์์์ ๋ง๊ฒ order๋ฅผ ๋ถ์ฌํ์ฌ
์ํ๋ ์์๋๋ก ์ฌ์ง์ ์ถ๊ฐํ๊ณ ์ ํ์์ต๋๋ค.
์ด์ ๊ธฐ๋ณธ ๊ตฌํ ๋ฐฉ์์ ์์์ผ๋๊น, ์ฌ์ง ์
๋ก๋์ ์์ฉ ๋ฒ์ ์ผ๋ก ๋ค์ด๊ฐ๋ด
์๋ค.
3์ฅ์ ์ฌ์ง๊ณผ ํจ๊ป ์ง๋ฌธ์ ์ฌ๋ ธ๋๋ฐ, ๊ทธ ์ค 2๋ฒ์งธ ์ฌ์ง์ ์ญ์ ํ๊ณ ์๋ก์ด ์ฌ์ง์ ์ถ๊ฐํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
ํด๋ํฐ์์ ๋๋ฒ์งธ ์ฌ์ง์ ์ญ์ ํ๊ณ ๋ต๋ณ๋ฑ๋ก ๋ฒํผ์ ๋๋ฅด๋ฉด, iOS์์๋ ์ญ์ ๋ ์ฌ์ง์ ๋นผ๊ณ , ์๋ก์ด ์ฌ์ง์ ๋ฃ์ด์
์ด 3๊ฐ์ ์ฌ์ง์ order์ ๋ง๊ฒ List ํํ๋ก ๋ฐฐ์ดํฉ๋๋ค.
์์ ๋ List์ ํฌํจํ์ฌ ์ง๋ฌธ์ ์คํ๋ง์ ์ ์กํ๋ฉด,
์คํ๋ง์ ์ญ์ ํ ์ฌ์ง์ ์ญ์ ํ๊ณ , ์ถ๊ฐ๋ ์ฌ์ง์ ์ถ๊ฐํ๊ณ , ๊ธฐ์กด์ ์ฌ์ง๋ค์ order ๊ฐ์ ๋ณ๊ฒฝํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ญ์ ํ ์ฌ์ง๊ณผ ์ถ๊ฐ๋ ์ฌ์ง์ S3์ ๋ณด๋ด๊ณ , S3๋ ์ญ์ ๋ ์ฌ์ง ๊ฐ์ฒด๋ค์ ์ ๊ฑฐํ๊ณ ์ถ๊ฐ๋ ์ฌ์ง๋ค์ ๋ค์ ์ ์ฅํฉ๋๋ค.
๊ทธ๋ ๊ฒ ํ๋ฉด ์์ ๋๋ฉด ์ง๋ฌธ๋ต๋ณ์์๋ ์๋ก์ด ์ฌ์ง๋ค์ด ์ค๋ฆฌ๊ฒ ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ํนํ ๋ด๊ฐ ์ํ๋ ์์๋๋ก ์ฌ์ง์ด ๋ฐฐ์ด๋๋ค๋ ์ ์ ์ ๋ด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค:blush:
ํํ๋ฉด์์ ๊ฐ์ด ์ญํ ์ ํกํกํ ํ๋ ๋๋ค์ง๋ฌธ๊ณผ ์ด์์์ง๋ฌธ, ์ด ๋์ ์ด๋ป๊ฒ ๊ตฌํํ์์๊น์?
๋จผ์ ๋๋ค์ง๋ฌธ์, ์ฌ์ค ์๋ฒ๊ฐ ๊ฐ์์์ด์ง๊ณ ์ง๋ฌธ๋ค์ด ์ฌ๋ผ์ง๊ณค ํด์ ์ผ๋ฐ์ ์ธ findById๋ก๋ ๊ตฌํ์ด ์ด๋ ค์ ์ต๋๋ค.
์ด๋ป๊ฒ ํ๋ฉด ๋งค๋ฒ ๋ค๋ฅธ ์ง๋ฌธ์ ๋ถ๋ฅผ ์ ์์๊น? ์ ๋ต์ idx๋ฅผ ๊ฑธ์ด๋๊ณ ํ์ด์ง๋ค์ด์
์ ํ๋ ๊ฒ์ด์์ต๋๋ค.
๋จผ์ ์ง๋ฌธ์ ๊ฐ์๋ฅผ ์ผ ํ, (0~1๊น์ง ์์์ ์)*(์ง๋ฌธ์ ๊ฐ์)->Longํ๋ฅผ ํตํด ์ธ๋ฑ์ค๋ฅผ ๊ตฌํ๊ณ ,
offset๊ณผ limit์ผ๋ก ํด๋น ์ธ๋ฑ์ค์ ์ง๋ฌธ ํ๋๋ง์ ์ถ์ถํ๋ ๋งค๋ฒ ๋ค๋ฅธ ์ง๋ฌธ์ ๋ค๊ณ ์ฌ ์ ์์์ต๋๋ค.
์ด์์์ง๋ฌธ์, ๋ต๋ณํ๊ธฐํญ์ ์๋ ์๋ง์ ์ง๋ฌธ๋ค ์ค "๋์ 2023๋
๋ชฉํ๋?"๋ง ์ด์์ ์ง๋ฌธ์ธ๋ฐ์.
์ ์ง๋ฌธ์ ๋จ์ํ ์ ํฌ๊ฐ ์ด์์ ์ง๋ฌธ์ผ๋ก ์ ํ ๊ฒ ์๋๋ผ, ์ค์ ๋ก ์ด์์ ์ ์ฉ ๊ณ์ (๋๋ค์ ์ง์๋ญ์)์ ์์ฑํ์ฌ ๋ง๋ ์ง๋ฌธ์
๋๋ค.
๊ทธ๋์ ์ฝ๋๋ฅผ ๋ฏ์ด๋ณด๋ฉด ADMIN_ID๊ฐ ๊ณ ์ ์ ์ ์์ด๋๋ก ์์ผ๋ฉฐ, ํด๋น ์์๋ common ํจํค์ง์ ์ ์ฅ๋์ด ์์ต๋๋ค.
๋จ์ํ ์์ด๋๋ก ์ถ์ถํ๋ ๊ฒ ์๋๋ผ, ์ง์๋ญ์ ๋์ด ์๋ก์ด ์ง๋ฌธ์ ๋ง๋ค๋ฉด ๊ทธ๋๋ง๋ค ์๋ก์ด ์ง๋ฌธ์ด ์
๋ฐ์ดํธ๋๊ฒ ์ฃ :blush:
์ง์2n ๋ฆฌ๋๋ฏธ๋ฅผ ๋ง์ง๋ง๊น์ง ์ฝ์ด์ฃผ์ ์ฌ๋ฌ๋ถ๋ค์๊ฒ ๊ฐ์ฌ๋ฅผ ํํ๋ฉฐ, ์ง๊ธ๊น์ง ๊ผญ๊ผญ ์จ๊ฒจ๋์๋ ๋ง์ง๋ง ๊ธฐ๋ฅ์ ์๊ฐํ๋ ค๊ณ ํฉ๋๋ค.
์ ํฌ๋ ๊ธฐ์กด์ ์ง์2n์ ์๋ ํํ๋ฉด์ ๋ณด๋ผ์ ๋ฒํผ์ ํ์ฉํ์ฌ ๊ฐ๋ฐ์ ํ๊ธฐ ํ๋ฉด์ ๋ง๋ค์์ต๋๋ค.
์ด๊ณณ์์๋ ์ ํฌ์ ์๊ฐ๊ณผ ํจ๊ป ๊นํ๋ธ, ์ธ์คํ ๋งํฌ๋ฅผ ๋ฌ์๋์์ต๋๋ค.
์ ํฌ๊ฐ ์ด๋ค ์ฌ๋์ธ์ง ๊ถ๊ธํ๋ค๋ฉด ์ธ์ ๋ ์ง ํ๊ธฐ ํ๋ฉด์ ๋ฐฉ๋ฌธํด์ฃผ์ธ์:blush:
์ฌ๊ธฐ๊น์ง ํด์ ์ง์2n์ ์๊ฐ๋ฅผ ๋ง์น๋ ค๊ณ ํฉ๋๋ค.
์ฒ์ ๋ง๋ค ๋๋ง ํด๋ ์ด๋ป๊ฒ ๋ค ๋ง๋ค์ง ๋ง๋งํ๋๋ฐ, ๋ค ๋ง๋ค๊ณ ๋ณด๋ ๊ฝค๋ ๋ฉ์ง ์ฑ์ด ํ์ํ์๋ค์!
๋ฐฑ๋ฌธ์ด ๋ถ์ฌ์ผ๊ฒฌ, ์ด์ ์ ํฌ ์ฑ์ ์ง์ ์จ๋ณด๋ ๊ฑด ์ด๋จ๊น์?
์ฌ๋ฐ๊ฒ ์ฆ๊ฒจ์ฃผ์๊ณ , ํน์ ์ค๋ฅ๊ฐ ์๊ธฐ๋ฉด ๊ท์คํ ํผ๋๋ฐฑ์ ๋๋ฆฌ๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค
2ํ๋, ๋ค๋ฅธ ํ๋, ์ํ ์ด์์ง ๋ถ๋ค๊น์ง ๋ชจ๋ ์๊ณ ๋ง์ผ์
จ์ต๋๋ค. ํนํ ์ฐ๋ฆฌ 2ํ์ ๋ค๋ค ์ ๋ง๋ก ๊ณ ์ํ์
จ์ด์!!:blush:
๊ทธ๋ผ ์ ํฌ๋ ๋ค์์ ๋ ๋ง๋์ ๋ฐ์ด๋ฐ์ด:wave: