Logging (7) 썸네일형 리스트형 [문제기록] K3s 에서 Airflow 사용 중 Iptables 규칙 과부하로 인한 통신 불가 문제 알아둬야 할 사전 지식 (1) iptables 란 네트워크 담당 직무인 개발자 분들이라면 직접 관리까지 하시겠지만, 앱 개발자로서는 낯설 수 있어 간단히만 짚고 넘어가려 한다. 리눅스 계열 OS 에서 사용하는 방화벽 프로그램이라고 보면 된다. iptables 는 요청 단위가 아닌 개별 패킷 단위로 머신에 적용된 규칙을 확인하고 적용한다. 다음 예시를 살펴보자. $ sudo iptables -L -n --line numbers # iptable 에 적용된 규칙들 확인...Chain FORWARD (policy DROP)num target prot opt source destination 1 DOCKER-USER all -- 0.0.0.0/0 0.0.0.0/0 2 DOCKER-ISOLATION-STA.. [문제기록] K8s+Ingress 로 Spring Boot 배포시 Tomcat 400 에러 관련 사내 환경에서 Baremetal 용 Ingress Controller 를 설치해서 Spring Boot 애플리케이션을 이전하는 작업을 진행하였다. Ingress Controller 는 환경/목적 별로 정의서가 구분되어 있는 오픈 소스를 많이 활용한다. 사내는 외부와 연동이 어렵고 VM 을 할당받아 사용하기 때문에 Baremetal 용으로 사용하였다. (https://kubernetes.github.io/ingress-nginx/deploy/baremetal/) Baremetal 용은 Ingress Controller 서비스가 Node Port 서비스이기 때문에 워커 노드들의 Node 를 활용해서 Ingress Controller로의 접근을 제어해야 한다. 따라서 모든 워커노드들에 대한 접근을 제어하기 .. [Spring MVC] org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 오류 API 테스트를 하다가 이해가 안되는 상황이 발생했는데, 이런 상황이 발생할 수도 있구나 싶고 누군가에게 도움이 될 수도 있을 것 같아서 짧게 기록해둔다. 다음과 같은 페이징 조회를 하여 특정 테이블에서 추천 인스턴스들을 반환하는 요청을 만든 후 API 테스트를 하던 중 발생하였다. @GetMapping("/api/v0/hello/suggest") public ResponseEntity getHello( @RequestParam(required = false, defaultValue = "") String aFilter , @RequestParam(required = false, defaultValue = "") String bFilter , @RequestParam(defaultValue = "-1").. [JPA] OSIV 만 믿었다가 Lazy 로딩에 발등찍힌 썰 작업을 하다가 처음 보는 문제점을 확인해서 로깅 기록을 남겨보게 되었다. 요즘 글 많이 쓰기 힘들어서 문제 설명만 하고 빨리빨리 진행하겠다. 이 로직만 정말 하루 종일 작업했다. 1. 문제 상황 Group 과 GroupCategory, Category 가 있다. 카테고리에는 categoryValue 가 있고, Group 과 Category 는 N:N 관계이며 GroupCategory 테이블이 둘을 연결해준다. Group 을 검색하는 로직을 만들고 있을 때, JPQL, 1:N 의 fetchJoin 에서의 Paging 처리 문제 등등으로 인해서, GroupCategory 와 Category 를 fetch Join 하지 못한채 원하는 Group List 를 가져온 상황이다. (이럴 수밖에 없었음.. 해쉬태그 .. Spring Boot 개발하면서 요즘 드는 생각 첫번째. 정말 많은 객체들의 동작들이 서로 연결되어 있다. 지금 하는 개발이 다른 객체들에게 어떤 영향을 주는지를 정확하게 알아야 하고, 역할을 분리해야 하고 등등.. 처음에 각 도메인들 CRUD 식으로 도메인 개발할 때야 쉬웠지만, 심화되다보면 빼먹은 비즈니스 로직, 변하는 비즈니스 로직에 따라서 이 어찌어찌 얽혀있는 것들을 계속 풀어내야 한다. 그쯤되면 앱이 더러워 보이고, 키기 무서워지고, 다시 하고 싶거나, 그만하고 싶어진다. 이럴 때 믿을건 Test 코드들 뿐인 건 공감한다. 하지만 Test 들도 언제나 프로젝트 처음 시작할 때 만든 나의 Test 는 개판이고 쓰레기라, 유지보수 덩어리로만 보인다. 이 임계지점을 넘어야 하는 것 같다. 그래야 SW 가 나오는 것 같다. 토이성 프로젝트로 만드는 .. [문제기록] Lombok @Getter 사용시 boolean 값 처리에 대하여 프로젝트를 하던 중, 다음과 같은 Request DTO 를 만들어야 할 일이 있어서 만들었다. @Getter @Setter @NoArgsConstructor public class ACreateReqDto { private String name; // ... private boolean hasRule; @JsonProperty("rule") private RuleCreateReqDto ruleDto; @Getter @Setter public class RuleCreateReqDto{ private String ruleName; private boolean isAgeRule; } } 이렇게 해서 다음과 같이 요청처리 코딩을 완료해서 다음과 같이 날려보았다. 다 잘 들어오는줄 알았는데, 이상하게도 isAge.. [문제기록] DataJpaTest 시 NoSuchBeanDefinitionException / UnsatisfiedDependencyException 새로운 프로젝트에서 Query 가 들어있는 Repository 단을 Test 해야 해서 진행을 해보았다. 일반 Repository 의 모습이라 다음 정도 수준이였다. public interface MemberRepository { Optional findByUsername(String username); } @Repository @RequiredArgsConstructor public class MemberJpaRepository implements MemberRepository{ private final EntityManager em; private final JPAQueryFactory queryFactory; ... @Override public Optional findByUsername(Strin.. 이전 1 다음