Close
Close full mode
logo만렙 개발자 키우기

발생 가능한 문제 상황

Git RepositoryEdit on Github
Last update: a year ago by nowwaterReading time: 2 min

🚨 발생 가능한 문제 상황 🚨

공통 모듈에 동일한 코드와 핵심 기능을 수행하는 코드들이 들어간다.

하지만 여러 어플리케이션에서 각각 필요한 기능들을 추가할 일이 생기고, 의도하거나 의도치않게 이러한 코드들이 공통 모듈에 쌓이게 될 수 있다.

결국 이런 상황이 반복되다보면 공통 모듈은 너무 커지고 많은 일을 하는 반면, 어플리케이션에서 하는 일은 보다 적어지는 이상 현상이 발생하게 된다!



🍝 스파게티 코드

코드가 서로 얽히고 섥혀서 하나의 코드를 수정하였을 때 전체 코드가 영향을 받게 되는 현상이 발생할 수 있다.

A 서비스 -> B 서비스 -> C 서비스 -> D 서비스 -> A 서비스

이 경우 더이상 공통 모듈에 들어간 코드는 처음 의도하였던 코드가 아니게 되버린다.

혼자 개발하는 경우에도 실수를 할 여지가 존재하는데, 여러 명이서 함께 개발하는 경우는? 말하지 않아도 절망적이다..



🎊 의존성 대환장파티

프로젝트에서 사용하는 대부분의 의존성이 공통 모듈로부터 시작된다.

문제는 어플리케이션들이 각자 사용하는 의존성이 다 다를 수 있다는 것이다.

ex) DB가 필요하지 않은 어플리케이션도 공통 모듈을 사용하려면 DB와 커넥션을 맺어야 한다.

의존성을 기반으로 발동되는 스프링 부트의 AutoConfiguration 덕분에 어디선가 의존성 대환장파티가 열리게 되고, 그 어플리케이션은 최적화되지 않게 되어버릴 것이다.



👨‍👩‍👦‍👦 공통 설정

공통 모듈에 공통 설정으로 인해 많은 문제점들이 발생할 수 있다.

Thread Pool, Connection Pool, Timeout 등의 설정도 가장 민감하고 중요한 어플리케이션 기준으로 작동한다.

특히 커넥션 풀의 경우, 공통 설정의 커넥션 설정과 실제로 DB를 사용하는 어플리케이션의 커넥션 설정 정보가 다르다면 큰 문제가 발생할 수 있다.

🕋 Backend — Previous
멀티 모듈 구성하기
Next — 🕋 Backend
대용량 데이터 처리