본문 바로가기

분류 전체보기35

어플리케이션 아키텍처 2) 유지보수성(Maintainability) 소프트웨어 개발 이론에서 유지보수성을 고려해서 개발해야한다고 전통적으로 종종 언급된다. 유지보수를 고려하지 않는다면 어떻게 될까? 기능개발에 있어서 단순 동작만을 생각한다면 오히려 유지보수를 고려한 코드보다 더 개발하기 쉽고 빠르다. 어느정도 개발을 경험하다보면 대부분 느끼게 될것이다. 글쓰기에 비유하자면, 당연히 편집이나 교정할 필요가 없이 글을 일단 말이 되는대로 표현하고자 하면 금방 책을 쓸수 있듯이 말이다. 그렇다면 유지보수성을 높이고 싶다면 이론적으로 어떻게 정리 할 수 있을까? 대표적으로 언급되는 것이 낮은 결합(loose coupling)과 높은 응집(high cohesion)이다. 응집도는 모듈이나 클래스 등의 요소간에 서로 속하는 정도를 말한다. 관련 코드는 서로 가까이 있도록 높은 응집.. 2020. 6. 24.
크롬에서 쿠키 전송 되지 않는다? 외부도메인 SameSite 필자는 개발하던 중 CSRF토큰 발급을 Cookie(CsrfTokenRepository) 로 하고 있는 상황에서 CSRF쿠키를 받지 못하는 현상을 발견하였다. 번호인증의 경우 외부 서비스를 사용해야 하는데, 여기서 번호인증이 끝나고 콜백으로 클라이언트가 서버에 인증완료를 요청할때 쿠키를 전송하지 못하는 현상이 발생한 것이다. (쿠키를 전송하지 못하면 CSRF token을 재갱신한다) 쿠키가 전송되지 않아 발생할 수 있는 문제를 알아보도록 한다. 최근에 크롬에서 쿠키 정책 SameSite을 변경함에 따라 발생된 이슈이다. https://www.chromium.org/updates/same-site SameSite Updates - The Chromium Projects Home of the Chromium.. 2020. 3. 24.
Spring Boot 기존 요청 스레드 처리하고 안전하게 종료하기 일반적으로 리눅스 환경에서 스프링 부트를 종료시킬때 kill -9 [PID] 명령어로 많이 사용하는것을 주위에서 보았다. 하지만 이 명령어로 사용하게 되면 처리중인 쓰레드 처리는 강제로 종료하게 되므로 권장하지 않는다. (Spring Boot 2.3 version 부터는 안전하게 종료하도록(graceful shutdown 지원이 된다고 한다.) 기존 쓰레드를 처리하고 안전하게 종료할 수 있는 방법 (Embedded Tomcat) public class ShutDownCustom implements TomcatConnectorCustomizer, ApplicationListener { private static final Logger log = LoggerFactory.getLogger(ShutDownCu.. 2020. 1. 16.
Spring Boot - 등록된 Bean 객체 사용하기 빈으로 등록하지 않아 스피링 빈으로 주입하지 않은 객체을 생성할때 Bean 에 등록된 객체를 불러오고 싶을때가 있다. 그럴경우 ApplicationContextAware 인터페이스를 구현한 클래스를 빈으로 등록하여 사용하면 된다. 이런식으로 유틸로도 활용할 수 있다. 2019. 12. 17.
애플리케이션 아키텍처 1) 객체지향과 절차지향, 용어 간단정리 1. 객체지향과 절차지향의 차이 각각 장단점이 있다. - 절차 지향 트랜잭션 스크립트(transaction script) - 객체 지향 모델로 설계시 (https://medium.com/swlh/creating-coding-excellence-with-domain-driven-design-88f73d2232c3) 2. 용어 정리 도메인이란 도메인은 일반적인 요구사항, 전문 용어, 그리고 컴퓨터 프로그래밍 분야에서 문제를 풀기위해 설계된 어떤 소프트웨어 프로그램에 대한 기능성을 정의하는 연구의 한 영역이다. 도메인 엔지니어링 이라고도 알려져 있다. 위키백과 비지니스 로직 비즈니스 로직(Business logic)은 컴퓨터 프로그램에서 실세계의 규칙에 따라 데이터를 생성·표시·저장·변경하는 부분을 일컫는다... 2019. 12. 16.
Spring Security Login에 따른 이전페이지(Referer) URL 이동SavedRequestAwareAuthentication SuccessHandler 소개 Security에서 Login 인증 성공에 따른 이전페이지로 이동할 수 있도록 제공해주는 Handler가 있는데 그것이 바로 SavedRequestAwareAuthenticationSuccessHandler 이다. Security설정할때 SuccessHandler로 이 클래스를 등록해주면 된다. ex ) @Override protected void configure(HttpSecurity http) throws Exception { http .formLogin() .loginPage("/login") .successHandler(successHandler()) .permitAll() ... ; } 다음은 이 핸들러에 대한 동작 과정에 대한 간단한 설명이다. 먼저 로그인을 해야하는 권한 페이지로 접속했을때.. 2019. 12. 4.