반응형 Spring Boot18 [Chaos Engineering] CM4SB 적용 내용 정리 Chaos Monkey for Spring Boot를 이용하여 사용하는 애플리케이션에 어떻게 적용하는지를 알아보도록 하겠습니다. 아래 소스는 모두 Github에사 확인할 수 있습니다. - 소스 설정 Spring Boot를 사용하고 있다면 쉽게 추가할 수 있습니다. 개발 환경 IDE : Intelij 2021.2.2 JDK : 1.8 Spring Boot : 2.5.8 Gradle 기존 사용하는 프로젝트안에 아래 2개의 라이브러리를 추가해주면 됩니다. dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'de.codecentric:chaos-monkey-spring-boo.. 2022. 2. 13. [Chaos Engineering] 개념 정리 최근에 회사에서 개발중인 시스템에서 아래와 같은 테스트 상황을 개발하게 되었습니다. 내용은 다음과 같습니다. 특정 사용자가 접속하여서 API를 호출하면 응답 지연을 할 수 있어야 한다. 해당 내용을 듣자 바로 AOP가 생각나서 그렇게 개발을 하였습니다. 그러다 Chaos Engineering이라는 내용을 알게 되었습니다. 그래서 기록하기 위해서 정리를 하게 되었습니다. Chaos Engineering 운영 환경에서도 갑작스러운 장애를 견딜 수 있는 시스템을 구축하기 위해 시스템을 실험하는 분야입니다. 시스템의 약점 서비스가 이용 불가능할때의 부적절한 대응 잘못 설정된 타임아웃 값으로 인한 지나친 재시도 뒷단의 시스템이 대규모 트래픽을 견디지 못해 발생한 장애 한 지점의 장애로 인해 연달아 발생하는 장애 .. 2022. 2. 13. Spring Boot Cache 적용 회사에서 Spring Boot Cache를 활용하여 적용할 기회가 생겨서 진행한 내용을 공유드립니다. 모든 소스는 Github에서 확인이 가능합니다.(링크) 캐시(cache)란 프로그램이 수행될 때 나타나는 데이터 지역성을 이용해 메모리나 디스크에서 사용되었던 내용을 빠르게 접근할 수 있는 곳에 보관하고 관리함으로써 두 번째 접근 부터는 보다 빠르게 참조하도록 하는 것입니다. 여기서 데이터 지역성은 어떠한 뜻을 가지고 있을까요? 그 뜻을 먼저 확인해보면, 다음과 같습니다. 데이터 지역성이란? 데이터 접근이 시간적 혹은 공간적으로 가깝게 일어나는 것을 의미합니다. 한 번 참조된 변수는 잠시 후에 또 참조될 가능성이 높습니다. 어떤 데이터에 접근할 때 그 데이터 근처에 있는 다른 데이터도 참조될 가능성이 높.. 2022. 1. 30. [Spring Boot] 지원 버전 확인하기 최근 회사에서 스프링 부트 버전이 지원 기간이 지나서 변경을 하게 되었습니다. 무엇보다 OSS(Open Source Sofrware)를 사용하기 때문에 지원 버전에 대해서 신경을 쓰지 못하였습니다. 하지만 생각을 해보니 무료로 사용하는 소프트웨어가 문재가 생겼다면, (사실 이런 문제가 생기면 안되겠지만 말이죠) 해당 버전이 지원가능한지부터 확인하는 작업이 필요합니다. 지원 버전 확인 Spring Boot 지원 버전 확인 상세 내용 확인 Branch : Spring Boot 버전 Initial Release : 출시 일자 End of Support : OSS 지원 마감 일자 End of Commercial Support : 유료 지원 마감 일자 현재 일자를 표시해주기 때문에 지원 일자를 좀 더 정확하게 확.. 2022. 1. 23. [Spring WebFlux] Timeout on Mono blocking read 해결 현재 저희팀에서 개발 시 Spring WebFlux를 사용하고 있습니다. Spring WebFlux의 대한 기본 지식없이 맨 땅에 헤딩하면서 진행하여서 해당 부분을 정리하려고 합니다. 개요 사용자 아이디를 이용해서 item을 갖고오는 API가 있습니다. public Flux collect(final String userId) 이 API의 응답값이 Flux으로 되어 있는데, 이 부분을 List으로 변환하고 싶습니다. 그래서 다음과 같은 작업을 하였습니다. 사건의 시작 Flux을 List으로 받기 위해서 아래 소스를 이용해서 응답을 받았습니다. 하지만... private List callUserItem(Request request) { return apiItemController.collect(request.. 2021. 11. 10. [Java] 접속한 IP를 구해보자 프로젝트를 진행 중. 접속한 사용자의 IP를 구하는 경우가 있었고. 그때를 기억하며 소스를 정리. 여기에 사용된 총 기술은 뒤로 나열하고. 소스 내용. /** * Client IP를 구한다. * * @param request HttpServletRequest 객체 * @return String 실제 사용자 IP * */ public static String getClientIp(final HttpServletRequest request) { String clientIp = ServiceConst.STRING_EMPTY; clientIp = request.getHeader("IPV6_ADR"); if( Strings.isNullOrEmpty(clientIp) || "unknown".equalsIgnoreC.. 2020. 5. 12. 이전 1 2 3 다음 반응형