Let's Parking!
(Dec 2022) Let's Parking!
Last updated
(Dec 2022) Let's Parking!
Last updated
์ต๊ทผ ํ ์ปค(Techeer)๋ผ๋ ๊ฐ๋ฐ์ ๊ทธ๋ฃน์ ์ํ ์น๊ตฌ ์๋น, ๋ํ๊ณผ ํจ๊ป ๋ ์ธ ํํน (Let's Parking!)์ด๋ผ๋ ์ฃผ์ฐจ ์์ฝ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ฒ ๋์์ต๋๋ค.
ํ์ฌ๋ง๋ค ์ฃผ์ฐจ ์์ฝ์ ํ๋ ์์คํ ์ด ๋ค๋ฅด๊ฒ ์ง๋ง ์ด ํ๋ก์ ํธ์ ๊ฒฝ์ฐ Google Form์ ์ด์ฉํด ์ฃผ์ฐจ ์ ์ฒญ์ ๋ฃ์ด์ผ ํ๋ ๊ฒ์ด ์ฃผ์ ๊ตฌํ ํฌ์ธํธ์์ต๋๋ค.
์ฃผ์ฐจํ ๋๋ง๋ค Google Form์ ๋ค์ด๊ฐ๋ ๋ด์ฉ์ ๋งค๋ฒ ๊ฐ์ผ๋ ์ด ๋ถ๋ถ์ ์ฌ์ฉ์๋ฅผ ์๋ณํ๊ณ ์ฌ์ฉ์๋ง๋ค ์์์ ๋ฃ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด๋๋ค๊ฐ ๋ ์ง๋ง๋ค ์ ์ฒญ์ ๋๋ฅผ ๋๋ง๋ค ์ฃผ์ฐจ ์์ฝ์ ํ ์ ์๋๋ก ํ์์ต๋๋ค.
์ด ๊ณผ์ ์์ Google Form ์ ๋ ฅ์ ์๋ํํ ์ ์๋๋ก Selenium์ ์ด์ฉํ๋๋ก ํ๊ณ , ์ด ์์ ์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋๋ฆฌ๊ธฐ ์ํด Spring Batch๋ฅผ ํ์ฉํ๊ธฐ๋ก ํ์ต๋๋ค.
ํ๋ก์ ํธ ์งํ ๊ธฐ๊ฐ์ 2022-12-16 ~ 2022-12-26์ผ๋ก, ์ฝ ์ด ํ ๊ฐ๋์ ๋๋ค.
๊ฐ์ ๋ถ๋ถ์ ์ฝ๋๋ฅผ ๋์์ ๊ฐ๋ฐํ๊ณ ๋ณ๊ฒฝํ๊ฒ ๋๋ฉด ์๋ฌด๋๋ ๋ฒ์ ๊ด๋ฆฌ ์ธก๋ฉด์์ ๋งค๋๋ฝ์ง ์๊ฒ ์งํ๋ ๊ฑฐ๋ผ ํ๋จํ์ฌ ํ์๊ณผ ์ญํ ๋ถ๋ด์ ํ๋ ๊ฒ๋ ์ค์ํ๋๋ฐ์. ์ฌ์ค ๊ท๋ชจ๊ฐ ๋ง์ด ํฐ(?) ํ๋ก์ ํธ๋ ์๋๋ผ์ 3๋ช ์ด์ ์ญํ ์ ๋๋๊ธฐ์ ์ ํฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ๊ฐ ๋งก์ ํํธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊น์๋น: Back End, Infrastructure
์ฅ๋ํ: Front End
์ด์น์ค(๋): Back End
์ด ์ค์ ์ ๋ OAuth ๊ตฌ๊ธ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ๊ณผ API ๊ฐ๋ฐ์ ๋ด๋นํ์ต๋๋ค.
์๋จ์ ๋ค์ด์ด๊ทธ๋จ์ ํ๋ก์ ํธ ์ํคํ ์ฒ์ ๋๋ค. (์๋น์ด๊ฐ ์๊ณ ํด์ฃผ์์ด์.)
๋ฐฑ์๋๋ก Spring MVC์ ORM์ธ Spring Data JPA๋ฅผ ์ฌ์ฉํ์ผ๋ฉฐ, ์ธ์ฆ์๋ Spring Security๋ฅผ, ์ฃผ์ฐจ ์์ฝ ๋ฐ ๋ฐฐ์น ํ์คํฌ ์ค์ผ์ค๋ง์๋ Spring Batch, Quartz์ Selenium์ ์ด์ฉํ์ต๋๋ค.
Sequence diagram์ ํตํด ์ ๋ฐ์ ์ธ ์ฑ์ ํ๋ฆ์ ๊ตฌ์กฐํํด๋ณด๋๋ก ํ์ต๋๋ค. (๋ง์ฐฌ๊ฐ์ง๋ก ์๋น์ด๊ฐ ์๊ณ ํด์ฃผ์์ด์.)
๋ก๊ทธ์ธ ํ ์ฃผ์ฐจ ์์์ ๋ง๋ค๊ณ , ๋ง๋ ์ฃผ์ฐจ ์์์ ์ด์ฉํด ์ฃผ์ฐจ ์ ์ฒญํ ๋ ์ง๋ฅผ ๊ณ ๋ฅด๋ฉด ๋ฐฐ์น ์ค์ผ์ค๋ง์ด ๋์ด ์ฃผ์ฐจ ์์ฝ์ด ๋๋ ์์คํ ์ ๋๋ค.
Kakao, Naver ๋ฑ ๋ค๋ฅธ ์์ ๋ก๊ทธ์ธ์ ๊ด์ฐฎ์ง๋ง ๋ฌด์๋ณด๋ค Google ๋ก๊ทธ์ธ์ ์ง์ํด์ผ ํด์ Spring Security๋ฅผ ์ด์ฉํด Google ๋ก๊ทธ์ธ์ ์ง์ํ๊ธฐ๋ก ํ์ต๋๋ค.
์ด์ ์๋ ํ๋ก์ ํธ๋ฅผ ๋ช ๋ฒ ์งํํ๋ฉด์ Spring Security๋ฅผ ์ด์ฉํ OAuth ์ธ์ฆ์ ๊ตฌํํ๊ณค ํ์ง๋ง ๊ตฌํํ ๋๋ง๋ค ํญ์ ์ด๋ป๊ฒ ํ๋์ง ๊น๋จน๊ฒ ๋๊ณค ํ์ต๋๋ค. ๋ก๊ทธ์ธ/์ธ์ฆ์ด ์๋ฌด๋๋ ํ ๋ฒ ๊ตฌํํด๋๋ฉด ๊ทธ ๋ค๋ก๋ ๋ค๋ฅธ ๊ธฐ๋ฅ๋ณด๋ค ๋ง์ด ๊ฑด๋๋ฆฌ์ง๋ ์๊ฒ ๋์ด์ ๊ทธ๋ฐ ๋ฏ ํฉ๋๋ค.
๋งค๋ฒ ๊ตฌ๊ธ๋งํ๋ฉด์ ๊ฐ์ ๋ด์ฉ์ ์ฐพ์ ๋ฐ์๋ ์ฐจ๋ผ๋ฆฌ ์ฌ๊ธฐ์ ๋ฌธ์๋ฅผ ๋จ๊ฒจ์ ๋ค์์ ๊ตฌํํ ๋๋ ์ฐธ๊ณ ํ๊ธฐ ์ํด Google OAuth Setup ํ์ด์ง๋ฅผ ๋ฐ๋ก ๋ถ๋ฆฌํ์ฌ ์ ๋ฆฌํ์์ต๋๋ค.
๋ํ, ์ฌ๋ด์์๋ง ์ฌ์ฉํ๋ ํ๋ก์ ํธ์ด๋ค๋ณด๋ ํน์ ์ด๋ฉ์ผ ๋๋ฉ์ธ์ ์ ์ธํ๊ณ ๋ ๊ฐ์ /์ธ์ฆ์ ๊ธ์งํด์ผ ํ์ต๋๋ค.
๊ฐ๋ฐ ๋จ๊ณ์์ ์ด์์ผ๋ก ๋ฃ์ ๋ถ๋ถ์ด๊ธฐ๋ ํ๊ณ ์ดํด๋ฅผ ์ํด ์ฝ๋๋ฅผ ๋ฐ๊ฟ์ ์ง๊ธ๊ณผ๋ ์ฝ๋๊ฐ ์์ดํฉ๋๋ค. ์ฝ๋์ ์ง์ด ๋์ง ์๋๋ผ๋ ์ํด ๋ฐ๋๋๋ค. ๐
AuthorizedEmailDomains
์ด๋ผ๋ ์ด๋ฉ์ผ๋ก๋ถํฐ ๋๋ฉ์ธ์ ์ถ์ถํด ํํฐ๋งํ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ณ , AuthorizedLitsynpEmailDomains
(์์)์ ๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌํํ์์ต๋๋ค. ์ด์ ์ด ๊ตฌํ์ฒด๋ฅผ ์ธ์ฆ์ด ํ์ํ ๊ณณ์์ DI๋ฅผ ํตํด ์ฃผ์
ํ์ฌ ์ด๋ฉ์ผ์ ๋๋ฉ์ธ์ด @litsynp.com
์ผ ๋๋ง ์ธ์ฆ์ ์ฑ๊ณตํ๋๋ก ๋ง๋ค์์ต๋๋ค.
์ข ๋ ํ์ฅ์ฑ์ ๋์ด์๋ฉด STRATEGY PATTERN ๋ฑ์ ๋์์ธํจํด์ ํ์ฉํด strictํ domain matching ๋ฐฉ์์ด ์๋ ๋ค๋ฅธ ์ธ์ฆ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์ ์๋๋ก ํ ์๋ ์๊ฒ ๋ค์.
๋ฌผ๋ก DB๋ OAuth ์ฑ ์ชฝ์์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ๋ ์๊ฒ ์ง๋ง ์ผ๋จ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๊ตฌํํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก ์์ค ์ฝ๋ ์ชฝ์์ ๋ง๋ ๋ฐฉ์์ ํํ์ต๋๋ค.
ํ๋ก์ ํธ๋ ํญ์ ์ฒ์์ ๊ตฌ์ ๋จ๊ณ์์ ๋ ์ฌ๋ ธ๋ ํฌ๊ธฐ๋ณด๋ค ํญ์ ์ปค์ง๋๋ผ๊ตฌ์. ๋ ์ธ ํํน๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์๊ฐ๋ณด๋ค ๋ณผ๋ฅจ์ด ์ปค์ง๊ฒ ๋์์ต๋๋ค. ์ค ๊ฐ๋ฐ์ ์ฌ์ค ์ผ์ฃผ์ผ ๋จ์ง์ธ๋ฐ PR๋ 32๊ฐ๊ฐ ๋จธ์ง๊ฐ ๋์๋ค์.
์์ง 1์ฐจ ๋ฐฐํฌ์ด๊ธด ํ์ง๋ง ๊ฒฐ๊ณผ๋ฌผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์์๊ฒ ํ๋ก ํธ๋ฅผ ๋์์ธํด์ค ๋ํ์ด์๊ฒ ๋ฐ์๋ฅผ... ๐
์์์ ์ธ๊ธํ๋ ๋ถ๋ถ ์ธ์๋ ์กฐ๊ธ ๋ ๊ฐ์ ํ ๋ถ๋ถ์ด ์๊ณค ํฉ๋๋ค. ์๋ฌด๋๋ ๋น ๋ฅด๊ฒ MVP๋ฅผ ๋ง๋๋ ๊ฒ์ด ๋ชฉ์ ์ด์๊ธฐ ๋๋ฌธ์ ๋ฆฌํฉํ ๋ง์ด๋ API ์๋ฌํธ๋ค๋ง์์ ๋ฏธํกํ ๋ถ๋ถ์ด ์์ต๋๋ค.
์ด ๋ถ๋ถ์ ์ค ์ฌ์ฉ์๋ถ๋ค์ QA ์งํ ํ ์งํํ๋ ๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๐
์ ์ธ์์ ๋ฉํ ์ด์ Palo Alto Networks์ Andrew ๋ฉํ ๋๊ป์ ๋ง์ํ์๊ธธ, ์ธ๊ฐ ๊ด๊ณ์์ 'fit'์ด๋ผ๋ ๊ฒ์ด ๊ต์ฅํ ์ค์ํ๊ณ , ์ฌ๋๋ง๋ค 'fit'์ด ๋ง๋ ์ฌ๋๋ค์ด ๋ชจ๋ ๋ค๋ฅด๋ค๊ณ ํฉ๋๋ค.
'fit'์ด ์๋ฒฝํ ๋ง๋ ์ฌ๋์ ๋ง๋๋ ๊ฒ์ด ์ฌ์ด ์ธ์์ ์๋๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ๋ง์์ด ๋ง๋๋ผ๋ ํ๋ก์ ํธ ์งํ์ด ์ ๋๋ ๊ฑด ๋ณ๊ฐ์ ์ผ์ด ๋๊ธฐ๋ ํ๊ตฌ์.
๊ทธ๋ฐ๋ฐ ์ด์ข๊ฒ ์ด๋ฒ์ ๋ง์๋ ์ ๋ง๊ณ ์ค๋ ฅ๋ ์ข์ ์น๊ตฌ๋ค๊ณผ ํจ๊ป ํ๋ก์ ํธ ์งํ์ ํ ์ ์์ด์ ๋งค์ฐ ์ฆ๊ฑฐ์ ์ต๋๋ค.
๋ค์์๋ ์ฌ๋ฐ๋ ํ๋ก์ ํธ ๋ง์ด ๋ง๋ค ์ ์์ผ๋ฉด ์ข๊ฒ ์ด์!