문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
web:신규서비스 [2020/11/05 10:41] kwon37xi [보안] |
web:신규서비스 [2020/11/24 13:22] kwon37xi [계층간 침범을 하지 말것] |
||
---|---|---|---|
줄 91: | 줄 91: | ||
* Repository | * Repository | ||
* Domain Object | * Domain Object | ||
- | |||
- | 특히 모듈화가 잘 안된 프로젝트에서 저지르는 흔한 실수 중의 하나가 로그인 사용자 객체를 자동으로 도메인 객체에 넣어주고 싶다던지의 이유로 | ||
항상 의존성은 위에서 아래로 흘러야 한다. | 항상 의존성은 위에서 아래로 흘러야 한다. | ||
+ | |||
+ | ==== Web Context 를 비즈니스까지 끌고가지 말 것 ==== | ||
+ | * 모듈화가 잘 안된 프로젝트에서 저지르는 흔한 실수 중의 하나가 로그인 사용자 객체를 자동으로 도메인 객체에 넣어주고 싶다던지의 이유로 | ||
+ | * UI단의 컨텍스트를 Method Parameter를 통하지 않고서 비즈니스 코드에서 직접 사용하는 일이 없게 해야한다. (보통은 이럴 때 '' | ||
+ | * JPA Auditing 같은 것. | ||
+ | * 단, 이런 상황이더라도, | ||
===== 웹 서비스 모듈의 분화 ===== | ===== 웹 서비스 모듈의 분화 ===== | ||
* Web Service 모듈의 경우 각 기능별로 Path 지정에 주의한다. | * Web Service 모듈의 경우 각 기능별로 Path 지정에 주의한다. | ||
줄 301: | 줄 305: | ||
* Load Balancer가 중간에서 설정에 의해 커넥션의 유효성 여부를 체크하고 유효하지 않을 경우, 혹은 장시간 미사용일 경우 강제로 끊어버릴 수 있는데 그 설정값이 Connection Pool의 설정과 매칭이 안되면 의도치 않은 순간에 접속이 끊길 수 있다. | * Load Balancer가 중간에서 설정에 의해 커넥션의 유효성 여부를 체크하고 유효하지 않을 경우, 혹은 장시간 미사용일 경우 강제로 끊어버릴 수 있는데 그 설정값이 Connection Pool의 설정과 매칭이 안되면 의도치 않은 순간에 접속이 끊길 수 있다. | ||
* 가장 손쉬운 확인 방법은 Load Balancer 없이 직접 커넥션을 맺고서도 동일 문제가 발생하는지 확인해 본다. | * 가장 손쉬운 확인 방법은 Load Balancer 없이 직접 커넥션을 맺고서도 동일 문제가 발생하는지 확인해 본다. | ||
+ | * Load Balancer 가 각 인스턴스를 활성화시키는 health check URL은 해당 인스턴스의 애플리케이션이 완전히 초기화가 완료된 뒤에 true 를 반환하게 해야한다. | ||
+ | * 그렇지 않으면 요청이 너무 일찍들어와서 일찍 들어온 요청들은 모두 오류가 발생하게 된다. | ||
+ | * Spring MVC 등을 사용히 health check url 용 컨트롤러를 만들어서 해당 컨트롤러는 Spring 의 필수 bean 들이 모두 초기화 되고, DB 커넥션풀 등도 맺어진 상태에서 수행될 수 있게 한다. ('' | ||
===== API 설계 ===== | ===== API 설계 ===== |