2024-07-26 학습일기
·
개발 기록
스프링어제 탬플릿 패턴으로 로그 추적기를 구현했었는데 이것에는 다소 문제점이 존재한다고 한다. 탬플릿 메서드 패턴을 사용하면 자식 클래스는 부모 클래스의 기능을 전혀 사용하지 않는데강결합되는 단점이 존재한다.부모 클래스에 새로운 메소드가 추가되면 자식 클래스는 전부 다 바뀌어야 함따라서, 엄청 좋은 구현 방법은 아니라고 한다.전략 패턴반복되는 작업을 하는 클래스의 내용이 바뀌어도전략 패턴의 경우 인터페이스만 의존하고 있기에 다른 클래스의 변경이 크게 영향을 미치지 않음특정 작업에 관한 인터페이스의 메소드만을 재정의해서 사용하므로전략 패턴을 주입받는 클래스의 생성시 관련 인자를 람다로 구현구현되어야 하는 메소드가 한 개일 때만 가능변하지 않는 부분을 Context(로그 출력 부분), 변하는 부분을 Stra..
2024-07-25 학습기록
·
개발 기록
스프링ThreadLocal을 사용하여 로그 추적기의 동시성 문제를 해결했었다.하지만, 여전히 Controller - Service - Repository에 불필요한 반복되는 코드는 남아있다. 이걸 똑똑하게 처리하기 위해 탬플릿 패턴을 적용하는 과정에 관해 학습했다.탬플릿 패턴은 공통으로 사용되는 부분은 묶어놓고 매번 다르게 사용되는 부분에 관해서는해당 탬플릿 패턴 클래스를 구현하는 쪽 클래스로 미룸으로 사용이 가능하다. 탬플릿 패턴은 내 블로그 포스팅에서도 담겨 있듯이 추상 클래스로 생성하여공통된 부분에 관한 코드는 작성해놓고 하위 자식 클래스에서 사용되는 부분만추상 메소드로 미룸으로 Override하여 동적 바인딩이 되도록 구성한다. 이때, 익명 내부 클래스를 사용하여 새로운 자식 클래스 파일을 생성하..
2024-07-24 학습일기
·
개발 기록
스프링어제 만들었던 로그 추적기는 Trace(HTTP 트랜잭션(?)의 ID, Level)의 동기화를 Trace 클래스를 관리하는 클래스 내부에서 한 것이 아닌 Controller, Service, Repository에서 관리 클래스가 제공하는메소드를  직접 호출해 동기화를 진행했다. 하지만, 위의 경우 관리 클래스 내부적으로 변경이 있거나(심지어 더 좋게하는 변경일지라도) Trace 자체가 변경이 되었을 때Controller, Service, Repository 전부에서 관련된 코드를 수정해주어야 하는 불편함이 있었다.만약, 인터페이스가 관련되어 있다면 작업된 코드가 커질수록 고쳐야 할 것은 산더미로 불어날 것이다. 따라서, 동기화를 관리 클래스 내부에서 진행하여 Controller, Service, R..
2024-07-23 학습일기
·
개발 기록
스프링스프링 AOP를 이해하기 위한 로그 추적기를 직접 구현해봤다. 커스텀하여 만든 로그 추적기는 우선 Controller - Service - Repository에 거의 반복되는 작업을전부 다 해줘야 한다. 이는 비효율적인 작업이라고 할 수 있다. 또한, 로그 추적기 클래스 내부에 변동이 있거나 다른 코드를 추가해줘야 하는 경우관련된 모든 클래스를 다 바꾸어야 한다.(인터페이스가 껴있다면 더 위험)  JenkinsSonarQube을 Jenkins 파이프라인과 함께 연동하며 관련된 지식을 학습Jenkins를 Master - Slave 구조로 구성 및 빌드 테스트 알고리즘해시 테이블 3문제폰켓몬베스트앨범의상
정보처리기사 합격 (2024.06.18)
·
개발 기록
정보처리기사에 합격하였다! 총점 90점으로 합격하였는데 친구들중에서는,하루 공부하고 65점으로 합격한 친구도 있었다. 중간중간 짬내서 공부했고 합격을 해내니 기분이 좋았다. 본인은 수제비 필기/실기 책을 사서 공부했다.  시험장에 갔을 때 정보처리기사를 응시하는 사람이 굉장히 많았는데합격률이 얼마나 될지 궁금하다.
2024-05-26(배포, docker-compose, Spring Cloud, Github Actions)
·
개발 기록
이번 캡스톤 프로젝트에서 배포를 맞게 되었고Spring Cloud를 처음 사용해보며 여러 작업을 하고 있다.docker-compose를 이용하여 컨테이너가 같은 도커 네트워크 환경을 공유할 수 있도록 하였고 MSA의 장점에 걸맞게 스케일 아웃했을 때 서버가 중단되지 않고 배포가 되는무중단 배포를 위해 Makefile를 제작하였다.(필자의 생각에 근거하여 Makefile을 작성하였기 때문에 이게 옳은 방법이라곤 할 수 없다.)  Makefile 초안(지금은 조금 다름).PHONY: up downup: docker-compose pull docker-compose up -d zookeeper kafka discovery-service gateway-service redis-user ..