ํ์ : PM(1) / Design(1) / Frontend(2) / Backend(3)
๊ธฐ๊ฐ : 2024.03 ~ 2025.03
๋งํฌ : https://github.com/M-ung/MoodBuddy_Server
์๋น์ค ๋ด์ฉ : ์ฌ์ฉ์๊ฐ ์์ฑํ ์ผ๊ธฐ๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ์ ๋ถ์ํ๋ ์น ์๋น์ค
์ํต : GitHub, Slack, Notion, Discord
ํญ์ ๊ฐ๋ฐ์ ํ๋ฉด์ ๋๋ ๊ณ ๋ฏผ ์ค ํ๋๊ฐ Service
๊ณ์ธต์ ์ฌ๋ฌ Repository
๋ฅผ ์ฃผ์
ํด์ผ ํ ์ง, ์๋๋ฉด ์ฌ๋ฌ Service
๋ฅผ ์ฃผ์
ํด์ผ ํ ์ง ๊ณ ๋ฏผ์ด ๋ ๋ค.
๐ ์ฌ๋ฌ Repository ์ฃผ์ ํ ๊ฒฝ์ฐ
@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class DiaryServiceImpl implements DiaryService {
private final UserRepository userRepository;
private final ProfileRepository profileRepository;
private final ProfileImageRepository profileImageRepository;
private final DiaryRepository diaryRepository;
private final DiaryImageRepository diaryImageRepository;
}
๐ ์ฌ๋ฌ Service ์ฃผ์ ํ ๊ฒฝ์ฐ
@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class DiaryServiceImpl implements DiaryService {
private final UserService userService;
private final ProfileService profileService;
private final ProfileImageService profileImageService;
private final DiaryImageService diaryImageService;
}
๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ค ์ ์ฉํด ๋ณด์์ง๋ง, "์ฌ๋ฌ Repository ์ฃผ์
ํ ๊ฒฝ์ฐ"๋ ๊ตฌํํ๋ ๋ฐ์ ์์ด์ ์ถ๊ฐ ์ฝ๋ ์์ด ๊ฐ ๋๋ฉ์ธ์ Repository
๋ฅผ ํตํด ์ ๊ทผํ ์ ์์ด์ ๊ฐํธํ๋ค. ํ์ง๋ง ์ค๋ณต๋๋ ๋ฉ์๋๊ฐ ๊ฐ ๊ฐ์ฒด๋ง๋ค ์๊ฒจ๋๋ค๋ ๋จ์ ์ด ์์๋ค.
๋ฐ๋๋ก "์ฌ๋ฌ Service ์ฃผ์
ํ ๊ฒฝ์ฐ"๋ ์ค๋ณต๋๋ ์ฝ๋๋ฅผ ์ค์ผ ์ ์์ด์ ์ข์์ง๋ง, ์ฝ๋์ ๋ณต์ก์ฑ์ด ๋์ด๋ฌ๋ค.
๊ฒฐ๊ตญ์๋ ๋ ๋ฐฉ๋ฒ ์ค ์ด๋ค ๊ฑธ ์ฐ๋ , ์ฝ๋๋ฅผ ๋ดค์ ๋ Service
๊ณ์ธต์ด ๋๋ฌด ๋ฌด๊ฒ๊ฒ ๋๊ปด์ก๋ค.
๊ทธ๋์ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๋์ค "ํผ์ฌ๋ ํจํด"์ ์๊ฒ ๋์๋ค.
ํผ์ฌ๋ ํจํด์ด๋?
ํผ์ฌ๋ ํจํด์ ๋ณต์กํ ๋ด๋ถ ์์คํ ์ ๋จ์ํํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๋์์ธ ํจํด์ด๋ค.
ํผ์ฌ๋ ๊ณ์ธต์ ์ถ๊ฐํ์ฌ Controller
- Facade
- Service
- Repository
๋ก ๊ตฌ์กฐํํ๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ์ "ํผ์ฌ๋ ํจํด" ๋ฐฉ์์ ์ ์ฉํด ๋ณด๊ธฐ๋ก ํ๋ค.
๋จผ์ ํฐ ํ์ "ํผ์ฌ๋ ํจํด"์ ๊ฐ์ ธ์ค์ง๋ง ์ฐ๋ฆฌ ํ๋ง์ ๊ท์น์ด ์ถ๊ฐ์ ์ผ๋ก ํ์ํ๋ค๊ณ ์๊ฐํ๋ค. ๊ทธ๋์ ์๋์ ๊ฐ์ ๊ท์น์ ๋ง๋ค์๋ค.
1. ๊ณ์ธต ์์๋ Controller
- Facade
- Service
- Repository
์์ผ๋ก ์ ์งํ๋ค.
2. ํ๋์ Service
๋ ์ต๋ํ ์ญํ ์ ๋ง๊ฒ ํ๋์ Repository๋ฅผ ๊ฐ๋๋ค.
3. ํ๋์ Facade
๋ ํด๋น ๋๋ฉ์ธ ์์์ ์ฌ๋ฌ Service๋ฅผ ๊ฐ์ง ์ ์๋ค.
์ฆ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ๋ค.
๊ทธ๋ผ ๊ตฌ์กฐ์ ๋ง๊ฒ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ์ ์ฝ๋๋ฅผ ์์ฑํด ๋ณด๊ฒ ๋ค.
๋ฌธ์ ํด๊ฒฐ๋ก ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์๋ค.
1. Service ๊ณ์ธต์ ๋ฉ์๋ ์ 14 โ 7, 50% ๊ฐ์.
2. Service ๊ณ์ธต์ ์ฝ๋ ๋ผ์ธ ์ 210 โ 76, ์ฝ 3๋ฐฐ ๊ฐ์.
3. Controller ๊ณ์ธต์์ ์ฌ๋ฌ Service๋ฅผ ์ง์ ๋ค๋ฃจ์ง ์๊ณ , ํ๋์ Facade๋ฅผ ํตํด ์ ๊ทผ ๊ฐ๋ฅ.
4. ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด ๊ตฌ์กฐ๋ก ์ ์ฐํ ํ์ฅ์ฑ ์ฆ๊ฐ.
์ฒ์์ผ๋ก ํผ์ฌ๋ ํจํด์ ์ ์ฉํด ํ๋ก์ ํธ๋ฅผ ๊ฒฝํํด ๋ณด์๋ค. ๋งค๋ฒ ๊ณ ๋ฏผ์ด์๋ Service ๊ณ์ธต์ Service
๋ฅผ ๋ง์ด ์ฃผ์
ํ ์ง, Repository
๋ฅผ ๋ง์ด ์ฃผ์
ํ ์ง๋ฅผ ์ด๋ฒ ๊ธฐํ์ ํด์ํ ์ ์์๋ค.
ํผ์ฌ๋ ํจํด์ ์ ์ฉํด ๊ฐ Service
์ ๊ฐ Repository
๋ ๊ฐ์์ ์ญํ ์ ์ ์งํ๋ฉด์ ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ํผ์ฌ๋ ์์ ์จ๊ธธ ์ ์์๋ค.
๋๋ ๊ฐ๋ฐ์ ํ ๋ ๊ฐ์ฅ ๋จผ์ ๊ณ ๋ฏผ์ ํ๋ ๊ฑด '์ด๋ป๊ฒ ํด์ผ ๊น๋ํ ๊น?' '์ด๋ป๊ฒ ํด์ผ ์ค๋ณต์ฑ์ด ์ ์ด์ง๊น?' ์ด๋ค. ํ์ง๋ง ์ด๋ฒ ํผ์ฌ๋ ํจํด ๊ฒฝํ ๋๋ถ์ ์ด ๊ณ ๋ฏผ์ ๋ํด ๋ค๋ฅธ ๊ด์ ์ ๊ฐ์ง ์ ์๋ ๊ธฐํ๊ฐ ๋์๋ค.