
๐ ์ค๋์ ํ์ต ํค์๋
- SpringData JPA - Service์์ ๋ค๋ฅธ Service๋ฅผ ์์กดํ๊ฒ ๋๋ค๋ฉด?
๐ Service์์ ๋ค๋ฅธ Service์ ๋ฉ์๋๋ฅผ ํธ์ถํด์ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด?
์๋น์ค์์ ๋ค๋ฅธ ์๋น์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํด์ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
<ํธ๋ ๋ก ๋ง๋ค๊ธฐ> ํ ํ๋ก์ ํธ ์งํ ์ค์ ๋๊ธ ์กฐํ ๊ธฐ๋ฅ์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ๋๋๋ค๊ฐ ์ด ์๊ธฐ ์ฃผ์ ๊ฐ ๋์๋ค.
ํธ๋ ๋ก์ ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด '๋ณด๋ > ์นผ๋ผ > ์นด๋ > ๋๊ธ' ์์ผ๋ก ๋์ด์๋ค.


์ฌ๊ธฐ์ ๋ด๊ฐ ์๊ฐํ ๋ฐฉ์์ '์นด๋ ๋จ๊ฑด ์กฐํ๋ฅผ ํ์ ๋, ๋๊ธ์ด ๋ฆฌ์คํธ ํ์์ผ๋ก ๊ฐ์ด ๋ณด์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์ ์นด๋ ๋๋ฉ์ธ ์๋น์ค๋จ์์ ๋๊ธ ์กฐํ๊ธฐ๋ฅ์ ๊ตฌํํด์ผ ํ์ง ์์๊น?'์๋ค. ๊ทธ๋ฐ๋ฐ ๋ค๋ฅธ ํ์์ ๋๊ธ ์กฐํ์ด๋ ๋๊ธ ๋๋ฉ์ธ ์๋น์ค๋จ์์ ์กฐํ ๊ธฐ๋ฅ์ ๋ง๋ค์ด์ ๊ทธ ๊ธฐ๋ฅ์ ์นด๋ ์ชฝ ์๋น์ค๋จ์์ ๊ฐ์ ธ๋ค ์จ์ผ ํ๋ค๊ณ ์๊ธฐํ๋ค.
ํ์์ ์๊ฒฌ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํด์ ๋ณด๋ฉด ์ด๋ ๊ฒ ๋๋ค. ์ด๋ฐ ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
// A ๋๋ฉ์ธ์ ์๋น์ค
@Service
public class AService {
@Autowired
private BService bService;
public void callBServiceMethod() {
// B ๋๋ฉ์ธ์ ์๋น์ค ๋ฉ์๋ ํธ์ถ
bService.doSomethingInB();
}
}
// B ๋๋ฉ์ธ์ ์๋น์ค
@Service
public class BService {
public void doSomethingInB() {
// B ๋๋ฉ์ธ์ ์๋น์ค์์ ์ํํด์ผ ํ ์์
System.out.println("Method in BService is called.");
}
}
์๋น์ค๊ฐ ์ง์ ์ ์ผ๋ก ๋ค๋ฅธ ๋๋ฉ์ธ์ ์๋น์ค๋ฅผ ํธ์ถํ๊ฒ๋๋ฉด, ์ฌ๋ฌ ๊ฐ์ง ๋ฌธ์ ์ ์ด ์๊ธฐ๋๋ฐ ์ ๋ฆฌํด ๋ณด์๋ฉด ์ด๋ ๋ค.
- ์์กด์ฑ ๊ฐํ(Increased Dependency): A ๋๋ฉ์ธ์ ์๋น์ค๊ฐ B ๋๋ฉ์ธ์ ์๋น์ค๋ฅผ ์ง์ ํธ์ถํ๋ฉด, ๋ ์๋น์ค ๊ฐ์ ์์กด์ฑ์ด ๋์์ง๋ค. ์ด๋ ๋ ์๋น์ค ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋์ด๊ณ , ๋ณ๊ฒฝ ์ฌํญ์ด ์ ํ๋๋ ๋ฒ์๋ฅผ ๋ํ ์ ์๋ค.
- ๊ฒฐํฉ๋ ์ฆ๊ฐ(Increased Coupling): A ๋๋ฉ์ธ์ ์๋น์ค๊ฐ B ๋๋ฉ์ธ์ ์๋น์ค๋ฅผ ์ง์ ํธ์ถํ๋ฉด, ๋ ์๋น์ค ๊ฐ์ ๊ฒฐํฉ๋๊ฐ ์ฆ๊ฐํ๋ค. ์ด๋ ํ ์๋น์ค๊ฐ ๋ค๋ฅธ ์๋น์ค์ ๋ด๋ถ ๊ตฌํ์ ์์กดํ๊ฒ ๋์ด, ๋ณ๊ฒฝ์ด ์ ํ๋ ์ ์๊ณ , ์ ์ง ๋ณด์๊ฐ ์ด๋ ค์์ง ์ ์๋ค.
- ๋ณด์ ๋ฌธ์ (Security Concerns): ์๋น์ค ๊ฐ์ ์ง์ ํธ์ถ์ ๋ณด์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ์ ์๋ค. ํนํ, ์ธ๋ถ๋ก ๋ ธ์ถ๋์ง ์์ ์๋น์ค์ ์ง์ ์ก์ธ์ค ํ ๊ฒฝ์ฐ, ๋ณด์ ์ทจ์ฝ์ ์ด ๋ ธ์ถ๋ ์ ์๋ค.
- ์ฑ๋ฅ ๋ฌธ์ (Performance Issues): ๋ค๋ฅธ ๋๋ฉ์ธ์ ์๋น์ค๋ฅผ ์ง์ ํธ์ถํ ๋๋ ๋คํธ์ํฌ ์ง์ฐ์ด๋ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ด๋ก ์ธํด ์ ์ฒด ์์คํ ์ ์๋ต ์๊ฐ์ด ๋๋ ค์ง ์ ์๋ค.
- ๋ณ๊ฒฝ ๊ด๋ฆฌ ์ด๋ ค์(Difficulty in Change Management): ์๋น์ค ๊ฐ์ ์ง์ ํธ์ถ์ ์๋น์ค ๊ฐ์ ๋ณ๊ฒฝ์ ์ด๋ ต๊ฒ ๋ง๋ค ์ ์๋ค. ํ ์๋น์ค์ ๋ณ๊ฒฝ์ด ๋ค๋ฅธ ์๋น์ค์ ์ํฅ์ ๋ฏธ์น๋ ๊ฒฝ์ฐ, ๋ณ๊ฒฝ ๊ด๋ฆฌ ๋ฐ ๋ฐฐํฌ๊ฐ ๋ ๋ณต์กํด์ง ์ ์๋ค.
- ํ ์คํธ ์ด๋ ค์(Difficulty Of Test): A ์๋น์ค๋ฅผ ํ ์คํธํ ๋ B ์๋น์ค์ ๋์์ด ํฌํจ๋๋ฏ๋ก, ๋จ์ ํ ์คํธ๊ฐ ์ด๋ ค์์ง๋ค. ๋ํ B ์๋น์ค๊ฐ ์ธ๋ถ ์์กด์ฑ์ ๊ฐ์ง๊ณ ์๋ค๋ฉด ํ ์คํธ์ ๋ณต์ก์ฑ์ด ๋์ฑ ์ฆ๊ฐํ ์ ์๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ค๊ฐ ๋งค๊ฐ์ฒด๋ฅผ ํตํ ๊ฐ์ ํต์ , ์ด๋ฒคํธ ๊ธฐ๋ฐ ํตํฉ, ์๋น์ค ๋ฒ์ค ๋ฑ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ์๋น์ค ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ ์์กด์ฑ์ ๊ด๋ฆฌํ ์ ์๋ค.
ํ์๋ค์๊ฒ ์ด ๋ด์ฉ์ ์ ๋ฆฌํด์ ์ ๋ฌํ๊ณ , ์ฌ๋ฌ ๊ฐ์ง ๋ฌธ์ ์ ์ด ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ ์ด ๋ฐฉ์์ผ๋ก๋ ์ฝ๋๋ฅผ ์ง์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ๋ค.