๊ฐ๋ฐ๊ธฐ๊ฐ : 2024-09-06(๊ธ) ~ 2024-12-02(์)
์บ์นํ๋ ์ด์ฆ : ๋ชจ์ผ๋ ์ฆ๊ฑฐ์, ๋ชจ์์ผ๋ก๋ถํฐ
๋ฐํ์๋ฃ : https://1drv.ms/p/s!Asad0zibIBicikUbIypvONh4avO7?e=poq9vJ
๋ฐํ์์ : https://www.youtube.com/watch?v=eKirps0OGmg&t=1607s
- ์ค๊ณ ๊ฑฐ๋ ์ ์ฒด์ ๋ถ์์ ๋ฐ๋ฅด๋ฉด, ์ ๊ทน์ ์ผ๋ก ์ทจ๋ฏธ๋ฅผ ์ฆ๊ธฐ๊ณ ์์ ๋์ง์ ํ๋ "๋๊น ์กฑ"๋ค์ด ์ค๊ณ ๊ฑฐ๋ ์์ฅ์ ์ด๋๊ณ ์๋ค๊ณ ํ๋ค.
- ์ค์ ๋ก ์ทจ๋ฏธ/ํค๋ํธ ์ํ์ ๊ฑฐ๋๊ฑด์๊ฐ ์์ 3๊ฑด ์์ ํฌํจ๋๋ ๋ฑ ์์น์ธ๋ฅผ ๋ณด์ด๊ณ ์์ง๋ง, ํด์ธ์ ๋ฌ๋ฆฌ ๊ตญ๋ด์๋ ์์งํ๋ง์ ๋์์ผ๋ก ํ๋ ์จ๋ผ์ธ ํ๋ซํผ์ด ๋ถ์ฌํ ์ํ์ด๋ค.
- ์์ง๊ฐ๋ค์ ์จ๋ผ์ธ ์นดํ๋ ๋ธ๋ก๊ทธ, ์ค๊ณ ๊ฑฐ๋ ํ๋ซํผ ๋ฑ์์ ์๊ท๋ชจ๋ก ํ๋ํ์ฌ, ์์ง๊ฐ๋ค๋ง์ ์ํ ์ปค๋ฎค๋ํฐ์ ๊ท๋ชจ๊ฐ ์๊ณ ์ ๋ณด๊ฐ ์ฐ๋ฐ์ ์ผ๋ก ๊ณต์ ๋๊ณ ์๋ค.
- ๋ฐ๋ผ ์ด๋ฆ ๊ทธ๋๋ก โ๋ชจ์ผ๋คโ๋ผ๋ ๋ป์ ๋ด์, ์คํ๋ผ์ธ์ ํฉ์ด์ ธ ์๋ ๋๋ง์ ์์คํ ์์งํ์ ํ ๋ฐ ๋ชจ์์ ๊ด๋ฆฌํ๊ณ ๊ณต์ ํ ์ ์๋ ํ๋ซํผ์ ์ ๊ณตํ๊ณ ์ ํ๋ค.
- ๊ธฐํ ๋ฐ ์ค๊ณ
- ๊ธฐ์ ์คํ
- ํ๋ก์ ํธ ๊ตฌ์กฐ
- ์ฃผ์ ๊ธฐ๋ฅ
- ํ๋ฉด๊ตฌ์ฑ
- ๋ฐฐํฌ ๋ฐ ์์คํ ๊ตฌ์กฐ
- ํธ๋ฌ๋ธ์ํ
Figma๋ฅผ ํตํด UI Prototype์ ์์ฑํจ์ผ๋ก์จ ๊ธฐ๋ฅ ํ๋ฆ์ ์๊ฐ์ ์ผ๋ก ํ์ธํ๊ณ ํ์๊ฐ ๋์์ธ ๋ฐฉํฅ ๊ณต์
Figma ๊ธฐ๋ฐ์ผ๋ก UseCase๋ฅผ ์์ฑํ์ฌ Actor๋ฅผ ์๋ณํ๊ณ , ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ ๋ฐ ์์คํ ๊ณผ์ ์ํธ์์ฉ์ ํ์ธ
Exerd ๊ธฐ๋ฐ์ผ๋ก DB Modeling ์งํํ์ฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ฐ ๊ด๊ณ ์ค์
Notion์ ํตํด ํ์ ๊ฐ์์ ์์
์ฌํญ ๋ฐ ํ์๋ก ๊ณต์
github - slack ์ฐ๋์ผ๋ก push ์๋ฆผ ๊ตฌ์ฑ
ํ๋ก์ ํธ ๊ตฌ์กฐ
๐ฆmain โฃ ๐java โ โฃ ๐moum โ โ โฃ ๐project โ โ โ โฃ ๐config โ โ โ โ โฃ ๐CustomUserDetails.java โ โ โ โ โฃ ๐MailConfig.java โ โ โ โ โฃ ๐MyBatisConfig.java โ โ โ โ โฃ ๐SecurityConfig.java โ โ โ โ โ ๐WebSocketConfig.java โ โ โ โฃ ๐controller โ โ โ โ โฃ ๐AchievementController.java โ โ โ โ โฃ ๐AdminController.java โ โ โ โ โฃ ๐AlertController.java โ โ โ โ โฃ ๐AuthController.java โ โ โ โ โฃ ๐BoardController.java โ โ โ โ โฃ ๐ChatController.java โ โ โ โ โฃ ๐CollectionController.java โ โ โ โ โฃ ๐CommentController.java โ โ โ โ โฃ ๐ErrorController.java โ โ โ โ โฃ ๐HomeController.java โ โ โ โ โฃ ๐LikesController.java โ โ โ โ โฃ ๐MailController.java โ โ โ โ โฃ ๐ReportController.java โ โ โ โ โฃ ๐SocketController.java โ โ โ โ โ ๐UserController.java โ โ โ โฃ ๐dao โ โ โ โ โฃ ๐AchievementDao.java โ โ โ โ โฃ ๐AlertDao.java โ โ โ โ โฃ ๐BoardDao.java โ โ โ โ โฃ ๐ChatDao.java โ โ โ โ โฃ ๐CollectionCategoryDao.java โ โ โ โ โฃ ๐CollectionDao.java โ โ โ โ โฃ ๐CollectionStatusDao.java โ โ โ โ โฃ ๐CommentDao.java โ โ โ โ โฃ ๐LikesDao.java โ โ โ โ โฃ ๐ReportDao.java โ โ โ โ โฃ ๐UserDao.java โ โ โ โ โ ๐UserSnsDao.java โ โ โ โฃ ๐dto โ โ โ โ โ ๐MailDTO.java โ โ โ โฃ ๐paging โ โ โ โ โ ๐RequestList.java โ โ โ โฃ ๐service โ โ โ โ โฃ ๐AchievementService.java โ โ โ โ โฃ ๐AlertService.java โ โ โ โ โฃ ๐BoardService.java โ โ โ โ โฃ ๐ChatKafkaConsumer.java โ โ โ โ โฃ ๐ChatKafkaProducer.java โ โ โ โ โฃ ๐ChatService.java โ โ โ โ โฃ ๐CollectionCategoryService.java โ โ โ โ โฃ ๐CollectionService.java โ โ โ โ โฃ ๐CollectionStatusService.java โ โ โ โ โฃ ๐CommentService.java โ โ โ โ โฃ ๐CustomOAuth2UserService.java โ โ โ โ โฃ ๐CustomUserDetailsService.java โ โ โ โ โฃ ๐DefaultAchievementService.java โ โ โ โ โฃ ๐DefaultAlertService.java โ โ โ โ โฃ ๐DefaultBoardService.java โ โ โ โ โฃ ๐DefaultChatService.java โ โ โ โ โฃ ๐DefaultCollectionCategoryService.java โ โ โ โ โฃ ๐DefaultCollectionService.java โ โ โ โ โฃ ๐DefaultCollectionStatusService.java โ โ โ โ โฃ ๐DefaultLikesService.java โ โ โ โ โฃ ๐DefaultReportService.java โ โ โ โ โฃ ๐DefaultUserService.java โ โ โ โ โฃ ๐KafkaToWebSocketService.java โ โ โ โ โฃ ๐LikesService.java โ โ โ โ โฃ ๐MailService.java โ โ โ โ โฃ ๐NcpObjectStorageService.java โ โ โ โ โฃ ๐OAuth2Service.java โ โ โ โ โฃ ๐ReportService.java โ โ โ โ โฃ ๐StorageService.java โ โ โ โ โ ๐UserService.java โ โ โ โฃ ๐vo โ โ โ โ โฃ ๐Achievement.java โ โ โ โ โฃ ๐Alert.java โ โ โ โ โฃ ๐AttachedFile.java โ โ โ โ โฃ ๐Board.java โ โ โ โ โฃ ๐Chat.java โ โ โ โ โฃ ๐Chatroom.java โ โ โ โ โฃ ๐Collection.java โ โ โ โ โฃ ๐CollectionStatus.java โ โ โ โ โฃ ๐CommentRequest.java โ โ โ โ โฃ ๐CommentResponse.java โ โ โ โ โฃ ๐Likes.java โ โ โ โ โฃ ๐Maincategory.java โ โ โ โ โฃ ๐Report.java โ โ โ โ โฃ ๐ReportCategory.java โ โ โ โ โฃ ๐ReportResultCategory.java โ โ โ โ โฃ ๐Subcategory.java โ โ โ โ โฃ ๐User.java โ โ โ โ โ ๐User_SNS.java โ โ โ โ ๐MoumApplication.java โฃ ๐resources โ โฃ ๐config โ โ โฃ ๐mail.properties โ โ โฃ ๐ncp.properties โ โฃ ๐moum โ โ โฃ ๐project โ โ โ โฃ ๐dao โ โ โ โ โฃ ๐AchievementDao.xml โ โ โ โ โฃ ๐AlertDao.xml โ โ โ โ โฃ ๐BoardDao.xml โ โ โ โ โฃ ๐ChatDao.xml โ โ โ โ โฃ ๐CollectionCategoryDao.xml โ โ โ โ โฃ ๐CollectionDao.xml โ โ โ โ โฃ ๐CollectionStatusDao.xml โ โ โ โ โฃ ๐CommentDao.xml โ โ โ โ โฃ ๐LikesDao.xml โ โ โ โ โฃ ๐ReportDao.xml โ โ โ โ โฃ ๐UserDao.xml โ โ โ โ โ ๐UserSnsDao.xml โ โฃ ๐static โ โ โฃ ๐css โ โ โฃ ๐images โ โ โ โฃ ๐achievement โ โ โ โฃ ๐board โ โ โ โฃ ๐collections โ โ โ โฃ ๐common โ โ โ โฃ ๐common2 โ โ โ โฃ ๐main โ โ โ โฃ ๐post โ โ โ โฃ ๐user โ โ โฃ ๐js โ โ โฃ ๐favicon.ico โ โ โ ๐index.html โ โฃ ๐templates โ โ โฃ ๐achievement โ โ โฃ ๐admin โ โ โฃ ๐auth โ โ โฃ ๐board โ โ โฃ ๐collection โ โ โฃ ๐report โ โ โฃ ๐user โ โ โฃ ๐error.html โ โ โฃ ๐footer.html โ โ โฃ ๐header.html โ โ โฃ ๐home.html โ โ โฃ ๐index.html โ โ โฃ ๐myhome.html โ โ โฃ ๐ranking.html โ โ โ ๐test.html โ โฃ ๐application-dev.yml โ โฃ ๐application-local.yml โ โฃ ๐application-prod.yml โ โ ๐application.yml
์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ๊ถํ ๊ด๋ฆฌ
Spring Security๋ฅผ ํ์ฉํ ๋ก๊ทธ์ธ ๋ฐ ์ ๊ทผ ๊ถํ ์ค์
OAuth2์ ๊ธฐ๋ฐํ ๊ฐํธ๋ก๊ทธ์ธ (๋ค์ด๋ฒ, ์นด์นด์ค, ๊ตฌ๊ธ ์ ๊ณต)
์์งํ ๊ด๋ฆฌ ๋ฐ ๊ณต์
๋ง์ดํ์ด๋ผ๋ ๋๋ง์ ๊ณต๊ฐ์ ํญ๋ชฉ๋ณ๋ก ์์งํ ๋ฑ๋ก ๋ฐ ๊ด๋ฆฌ
๊ฒ์๊ธ๊ณผ ์์งํ์ ์ฐ๋ํ์ฌ ๋ฑ๋กํ ์์งํ ๊ณต์ ๋ฐ ๊ฑฐ๋ ์ง์
๋ค์ํ ๊ฒ์๊ธ
์ฌ์ฉ์์ ๋ค์ํ ๋ชฉ์ ์ถฉ์กฑ์ ์ํด ์ผ๋ฐ, ์ ์, ๊ฑฐ๋ ๋ฑ ๋ค์ํ ๋ชฉ์ ์ ๊ฒ์๊ธ ์ ๊ณต
์
์ ์์คํ
์ฌ์ฉ์์ ํ๋ ๊ณ ์ทจ๋ฅผ ๋ชฉ์ ์ผ๋ก ํ๋ซํผ ๋ด ํ๋๋ณ ์
์ ์ทจ๋
๊ฒ์๊ธ ๋ชฉ๋ก ํ๋ฉด์์ ์ ์ฒด์ฌ์ฉ์์ ์
์ ๋ญํน ์ ๊ณต
์ค์๊ฐ ์ฑํ
์์งํ ๊ฑฐ๋ ์ง์์ ์ํด WebSocket๊ณผ Kafka์ ์ด์ฉํ 1:1 ์ฑํ
๊ธฐ๋ฅ
๊ด๋ฆฌ์ ๋ฐ ์ ๊ณ
๊ด๋ฆฌ์ ๊ถํ ์์ ์์๊ฒ๋ ๋ณ๋์ ๊ด๋ฆฌํ์ด์ง๋ก ํ๋ซํผ ๊ด๋ฆฌ ์ง์
๋ถ๊ฑด์ ํ ๊ฒ์๊ธ ์ ์ฌ๋ฅผ ์ํด ์ ๊ณ ๊ธฐ๋ฅ ์ง์
ํ๋น์ํค
OpenNamu๋ฅผ ํ์ฉํ์ฌ ์์ง๊ฐ๋ค๋ง์ ์ํ ์ํคํ์ด์ง ์ ๊ณต
ํ์ผ ์
๋ก๋ ๋ฐ ๊ด๋ฆฌ
ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง๋ฅผ ํ์ฉํ ์ด๋ฏธ์ง ๋ฐ ํ์ผ ์
๋ก๋
๋ฐํ์๋ฃ ๋ฐ ์์ ์ฐธ๊ณ
๋ฐํ์๋ฃ : https://1drv.ms/p/s!Asad0zibIBicikUbIypvONh4avO7?e=poq9vJ
๋ฐํ์์ : https://www.youtube.com/watch?v=eKirps0OGmg&t=1607s
ํ์๊ฐ์ /๋ก๊ทธ์ธ
- ๋ฉ์ธํ๋ฉด ์ฐ์ธก ์๋จ [์์ํ๊ธฐ] ๋ฒํผ์ผ๋ก ๋ก๊ทธ์ธ ํ๋ฉด ํ์ถ
- ์์ฒดํ์ ๋ฐ SNS ๋ก๊ทธ์ธ ์ ๊ณต
- ํ์๊ฐ์ ์ ๋๋ค์ ์ค๋ณต๊ฒ์ฌ ๋ฐ ์ด๋ฉ์ผ ์ธ์ฆ ์งํ
- ๋น๋ฐ๋ฒํธ ๊ท์น ์ค์ : ์ต์ 8์ / ์๋ฌธ, ์ซ์, ํน์๋ฌธ์ ํฌํจ
๋ง์ดํ์ด์ง
- ํ๋กํ์ฌ์ง ๋ณ๊ฒฝ, ๋๋ค์ ๋ฐ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ, SNS ๊ณ์ ์ฐ๋ ์ง์
์์งํ/๋ง์ดํ
- ๋ก๊ทธ์ธ ์ ๋ง์ดํ ํ์ด์ง๋ก ์ฐ๊ฒฐ
- ์์งํ ๋ฑ๋ก ๋ฐ ๊ด๋ฆฌ ์ง์
- ์์งํ ์นดํ ๊ณ ๋ฆฌ์ ๋ฐ๋ฅธ ํํฐ ์ง์
์์งํ ๋ฑ๋ก
- ์ฌ์ง ๋ฐ ํ์์ ๋ณด ์ ๋ ฅ ํ ์์งํ
๊ฒ์๊ธ
์ ์๊ฒ์๊ธ
์ผ๋ฐ๊ฒ์๊ธ
๊ฑฐ๋๊ฒ์๊ธ

- ๊ฒ์๊ธ์ ์ ์, ์ผ๋ฐ, ๊ฑฐ๋๊ฒ์๊ธ๋ก ๊ตฌ๋ถํ์ฌ ๋ ๋ฆฝ์ ๋ชฉ์ ๋ถ์ฌ
- ์ ์๊ฒ์๊ธ์ ํน์ ๊ธฐ๊ฐ ๋ด ํน์ ์ถ์ฒ ์ ๋ง์กฑ ์ ์๋ ๊ฒ์ฌ
- ๊ฑฐ๋๊ฒ์๊ธ์ ์ฌ์ฉ์๊ฐ ์์งํ ๊ฑฐ๋ ์ง์
๊ฒ์๊ธ ์์ธ
- ์ ๋ชฉ, ๋ด์ฉ, ๋๊ธ ๋ฑ ๊ฒ์๊ธ ์ ๋ณด ๊ฒ์
- ํ๋จ ํ๋กํ ๋ฐ์ค์์ ์์ฑ์ ์ ๋ณด ํ์ธ ๋ฐ ์ ๊ณ , ์ถ์ฒ ์ง์
- ๊ฑฐ๋๊ฒ์๊ธ์ ๊ฒฝ์ฐ [์ฑํ ํ๊ธฐ] ๋ฒํผ ํ์
๊ฒ์๊ธ ๋ฑ๋ก
- Summernote.js ํ์ฉ
์ ์
- ์ฌ์ฉ์์ ํ๋ซํผ ํ๋ ๊ณ ์ทจ๋ฅผ ์ํด ์ ์ ์์คํ ์ ์ฉ
- ๋ง์ดํ์ด์ง ์ฐ์ธก์์ ํ์ฌ ์งํ์ค์ธ ์ ์ ํ์ธ ๊ฐ๋ฅ
- ๋๋ณด๊ธฐ ๋ฒํผ ํด๋ฆญ ์ ๋ฏธํ๋ ์ ์ ๋ชฉ๋ก์ ์งํ๋ ์์ผ๋ก ์ถ๋ ฅ
- ์ ์ฒด / ํ๋ / ๋ฏธํ๋ ์ ์ ๋ชฉ๋ก ์กฐํ ๊ฐ๋ฅ
- ํ์๊ฐ์ ํ ์ฒซ ๋ก๊ทธ์ธ ์, ์๋ฆผ์ ํตํด ์ฒซ ์ ์ ์ทจ๋์ ์๋ ค์ค์ผ๋ก์จ ์ ์ ์์คํ ์๊ฐ
์ฑํ
- ์ฐ์ธก ์๋จ ์ฑํ ๋ฒํผ์ ํตํด ์ฑํ UI ์ ๊ทผ
- ์ฑํ ๋ฐฉ ๋ชฉ๋ก์์ ์๋๋ฐฉ ์ ๋ณด, ์ต๊ทผ๋ฉ์์ง, ๊ด๋ จ๊ฒ์๊ธ ์ฌ์ง ํ์ธ
- ํน์ ๋ฐฉ ํด๋ฆญ ์ ํด๋น ์ฑํ ์ฐฝ์ผ๋ก ์ด๋
- ์๋ก์ด ๋ฉ์์ง ๋ฐํ ์ ์๋๋ฐฉ์๊ฒ ์๋ฆผ ์ ์ก
- ์ฐธ๊ฐ์๊ฐ ๋ชจ๋ ์ฑํ ๋ฐฉ์ ๋ณด๊ณ ์๋ค๋ฉด ๋ณ๋ ์๋ฆผ ๋ฐํํ์ง ์์
์๋ฆผ
- ์ฐ์ธก ์๋จ ์๋ฆผ ๋ฒํผ์ ํตํด ์๋ฆผ UI ์ ๊ทผ
- ์๋ก์ด ์๋ฆผ์ด ์์ ์ ์ข ์๊น ๋ณ๊ฒฝํ์ฌ ํ์
- ํน์ ์๋ฆผ ํด๋ฆญ ์ ์ ํ์ ๋ฐ๋ผ ํ๋ฉด ์ด๋ (์ฑํ : ์ฑํ ๋ฐฉ / ๋๊ธ: ๊ฒ์๊ธ / ์ ์ : ๋ง์ดํ์ด์ง ๋ฑ)
- ์๋ฆผ์ฐฝ ์๋จ [๋ชจ๋ ์ฝ๊ธฐ] ๋ฒํผ์ผ๋ก ์๋ฆผ ์ฝ์์ฒ๋ฆฌ ๊ฐ๋ฅ
๊ด๋ฆฌ์
- ๊ด๋ฆฌ์ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ ์ ๋ณ๋ ๊ด๋ฆฌ์ ํ๋ฉด์ผ๋ก ์ด๋
- ์ปฌ๋ผ๋ณ ๊ฒ์ ๊ธฐ๋ฅ ์ ๊ณต
- ๊ฒ์๊ธ, ์์งํ ๋ถ๋ฅ, ์ ์ , ํ์, ์ ๊ณ ๊ด๋ฆฌ ์ง์
- ํ์ ๊ด๋ฆฌ ์ ์ํผ์ด๋๋ฏผ ๊ณ์ ์ ํํ์ฌ ๊ด๋ฆฌ์๊ถํ ๋ถ์ฌ/ํ์ ๊ฐ๋ฅ
์ ๊ณ
- ๊ฒ์๊ธ ํ๋กํ ์์ญ์์ ๋ถ์ ์ ํ ๊ฒ์๊ธ ์ ๊ณ ์ง์
- ์ ๊ณ ๋ ๊ฒ์๊ธ์ ๊ด๋ฆฌ์ ํ๋ฉด์์ ํ์ธ ๊ฐ๋ฅ
- ๊ด๋ฆฌ์๋ ํด๋น ๊ฒ์๊ธ ๊ฒฝ๊ณ /์ญ์ ์กฐ์น ๋ฐ ๊ธฐ๋ก
- ํ์์ ๋ฐ๋ผ ๊ธฐ๊ฐ ์ฒ๋ฆฌ
- ๊ฒฝ๊ณ /์ญ์ ์ ๋์์์๊ฒ ์๋ฆผ ๋ฐํ
ํ๋น์ํค
- ์์ง๊ฐ๋ค๋ง์ ์ ๋ณด ๊ณต์ ๋ฅผ ์ํด ์์ฒด ์ํค ์ ๊ณต
- OPENNamu ํ์ฉ
- ๋๋ฌด์ํค์ ์ ์ฌํ UI๋ก ์ ๋ณด ์ ๊ณต
- NamuMark ์ธ์ด๋ฅผ ํ์ฉํ์ฌ ํธ์ง ๊ฐ๋ฅ
- Github์ webhook, Jenkins ๋ฐ Docker๋ฅผ ํ์ฉํ์ฌ ์๋ ๋ฐฐํฌ ํ๊ฒฝ ๊ตฌ์ถ
- ๊ฐ๋ฐ์๋ฒ๋ Git Push ๋ฐ์ ์ ์๋์ผ๋ก Jenkins Build ์งํ
- ์ด์์๋ฒ๋ ๊ฐ๋ฐ์ ๊ฒํ ํ ์๋ Build ์งํ ๋ฐ ์ด์คํ ๋ฐฐํฌ
- ํด๋ผ์ด์ธํธ ์์ฒญ ์ Application Load Balancer๊ฐ Round Robin์ผ๋ก ๋ถ๋ฐฐ
- ์๋ฒ๋ ๋จ์ผ Storage, ๋จ์ผ Database๋ฅผ ์ฌ์ฉํ๋ฉฐ Standby Database๋ก ์ฅ์ ๋๋น
- ๋ค์ค์๋ฒ๊ฐ ๋ฉ์์ง ์ ์ก์ ์ํด Apache Kafka ํ์ฉ
- NCP Certification Manager๋ก SSL ์ ์ฉ
- NCP Image Optimizer๋ก ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ฆ ๋ฐ ํฌ๋กญ
- Moum ๋๋ฉ์ธ๊ณผ Wiki ๋๋ฉ์ธ ์์ฒญ ๊ตฌ๋ถ์ ์ํด Nginx ๋ฆฌ๋ฒ์ค ํ๋ก์ ์ ์ฉ
ํ๋กํ ์ฌ์ง ๋ณ๊ฒฝ ์ค๋ฅ
์ด์ ์๋ฒ ์ด์คํ ์ดํ, ํ๋กํ ์ฌ์ง ๋ณ๊ฒฝ ์ ์๋ฒ ์ค๋ฅ ๋ฐ์
์์ธ : Spring ์ฉ๋ ์ค์ , ๋๋ NCP Storage ์ฉ๋ ์ค์ ๋ฌธ์ ๋ก ์ถ์ธก
์๋ : Spring ๋ฐ Storage ์ฉ๋ ์ค์ ์ฌํ์ธ
๊ฒฐ๊ณผ : Local ๋ฐ Dev์์ ํ๋กํ ์ฌ์ง ๋ณ๊ฒฝ ๊ฐ๋ฅํจ์ ํ์ธํ์์ผ๋, ์ด์์๋ฒ์์ ๋์ผํ ์ค๋ฅ ๋ฐ์
์์ธ : ๋ค์ค ๋๋ฉ์ธ ๋ฐ SSL ์ ์ฉ์ ์ํด ์ด์์๋ฒ์ nginx๋ฅผ ๋์ ํ์๋๋ฐ, ์ค์ ์ฉ๋ ๊ธฐ๋ณธ๊ฐ์ด 1M์ธ ๊ฒ์ ํ์ธ
์๋ : ํด๋ผ์ด์ธํธ ์ต๋ ๋ฐ๋ ์ฌ์ด์ฆ๋ฅผ 100M์ผ๋ก ๋ณ๊ฒฝ
๊ฒฐ๊ณผ : ์ด์ ์๋ฒ์์ ํ๋กํ ์ฌ์ง ๋ณ๊ฒฝ ๊ฐ๋ฅํจ์ ํ์ธ
๊ฒ์๊ธ ์ฌ์ง ๋ฑ๋ก ์ค๋ฅ
๊ฒ์๊ธ ์ฌ์ง ์ฒจ๋ถ ์, ๊ฒ์๊ธ ๋ฑ๋ก์ฌ๋ถ์ ๊ด๊ณ์์ด ์ฒจ๋ถ ์ฆ์ Storage์ ์ ์ฅ๋๋ ๋ฌธ์ ํ์ธ
์์ธ : Summernote Editor์์ ์ด๋ฏธ์ง ์ฒจ๋ถ ํ์ฒ๋ฆฌ ์ ๋ฐ๋ก Storage์ ์ ๋ก๋ํ๋ ๊ฒ์ผ๋ก ํ์ธ
์๋
- ์ด๋ฏธ์ง ์ฒจ๋ถ ์ Base64 ๋ฐ์ดํฐ๋ก Summernote content์ ์ ์ฅ
- ์๋ฒ์ ๋ฑ๋ก ์์ฒญ ์ content ๋ด Base64๋ฅผ ํ์ง
- ํ์ง๋ ๋ฐ์ดํฐ๋ฅผ Storage์ ์ ๋ก๋ํ ํ URL์ ๋ฐํ๋ฐ์ content ์นํ
๊ฒฐ๊ณผ : ๊ฒ์๊ธ ์ฌ์ง ์ฒจ๋ถ ์ ์ ์๋ ํ์ธ
Opennamu Docker container ์ค๋ฅ
์คํ์์ค์ธ Opennamu ํ์ฉ์ ์๋ํ์์ผ๋, ์ ๊ณต๋ Dockerfile์ด ์ ์ ๋์ํ์ง ์์ container ์คํ ๋ถ๊ฐ
์์ธ : Opennamu ์์ค ๋ด Dockerfile์ ์กด์ฌํ๋, ๊ณต์์ ์ผ๋ก๋ Docker๋ฅผ ์ง์ํ์ง ์๋ ๊ฒ์ผ๋ก ํ์ธ
์๋ : ๋ณ๋ Ubuntu container ๋ด๋ถ์์ Opennamu๋ฅผ ๋ด๋ ค๋ฐ์ ์ง์ ์คํ
๊ฒฐ๊ณผ : Docker container ์คํ ํ์ธ
์ฑํ Socket ํต์ ๋ถ๊ฐ
์ด์์๋ฒ ์ด์คํ ์ดํ, ์ฑํ ๋ฐฉ ์ ์ฅ ์ 403 ์๋ฌ ๋ฐ์์ผ๋ก Socket ํต์ ์ฐ๊ฒฐ ๋ถ๊ฐ
์์ธ : ๊ธฐ์กด Socketํต์ ์ด ๋จ์ผ์๋ฒ ๋ด ์ด๋ฃจ์ด์ง๋๋ก ๊ตฌ์ฑ๋์ด ์์ด, ALB ๋ฐ ์ด์คํ ๊ตฌ์กฐ์์ ์ค๋ฅ ๋ฐ์ํ๋ ๊ฒ์ผ๋ก ์ถ์ธก
์๋ : ๋ฉ์์ง ์ค๊ฐ์๋ก์ Kafka๋ฅผ ๋์ ํ์ฌ ๋ค์ค์๋ฒ ๊ฐ ํต์ ์ด ๊ฐ๋ฅํ ๊ฒ์ ๊ธฐ๋
๊ฒฐ๊ณผ : Local ๋ฐ Dev์์ Kafka๋ฅผ ํตํด ํต์ ์ด ๊ฐ๋ฅํจ์ ํ์ธํ์ผ๋, ์ด์์๋ฒ์์๋ ๋์ผํ ์ค๋ฅ ๋ฐ์
์์ธ : ๋ค์ค ๋๋ฉ์ธ ๋ฐ SSL ์ ์ฉ์ ์ํด ์ด์์๋ฒ์ nginx๋ฅผ ๋์ ํ์๋๋ฐ, Websocket ๊ฒฝ๋ก๋ฅผ ์ฒ๋ฆฌํ์ง ์๋ ๊ฒ์ผ๋ก ํ์ธ
์๋ : /ws ๊ฒฝ๋ก๋ก ๋ค์ด์ค๋ ์์ฒญ์ WebSocket ํ๋กํ ์ฝ๋ก ์ ๊ทธ๋ ์ด๋ํ๋๋ก ์ค์ ์ถ๊ฐ
๊ฒฐ๊ณผ : ์ด์ ์๋ฒ์์์ Socket ํต์ ์ฑ๊ณต ํ์ธ






















