
개요오늘은 디자인 패턴 중에서 이름은 어렵지만 많은 곳에서 사용되는 템플릿 메서드 패턴(Template Method Pattern)에 대해 알아보도록 하겠습니다. 템플릿 메서드 패턴이란?“템플릿 메소드 패턴은 알고리즘의 골격을 정의합니다. 템플릿 메소드를 사용하면 알고리즘의 일부 단계를 서브클래스로 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 재정의할 수도 있습니다.” - 헤드 퍼스트 디자인 패턴“템플릿 메서드 패턴은 이름 그대로 템플릿을 사용하는 방식이다. 템플릿은 기준이 되는 거대한 틀이다. 템플릿이라는 틀에 변하지 않는 부분을 몰아둔다. 그리고 일부 변하는 부분을 호출해서 해결한다.” - 스프링 핵심 원리 고급편(김영한) 조금 더 간단히 알아보기 위해 예시를 샌드..

오늘은 Harbor를 사용하기 위한 기본정보와 간단한 사용방법에 대해 알아보려합니다. 1. 사전지식Harbor는 오픈소스 레지스트리로써 도커 이미지를 저장하고 태그를 통해 버저닝하여 관리하며 문제가 없는지 스캔하는 서드 파티입니다. 이러한 Harbor 자세히 알기 이전에 도커 이미지와 컨테이너에 대해 우선 짚고 넘어가 보겠습니다. Docker Image란?“도커 이미지는 소스 코드, 라이브러리, 종속성, 도구 및 응용 프로그램을 실행하는데 필요한 기타 파일을 포함하는 불변(변경 불가) 파일이다. 이미지는 읽기 전용이므로 스냅샷이라고도 하며, 특정 시점의 애플리케이션과 가상 환경을 나타낸다.”- 출처 : Docker Container와 Image란 무엇인가? 이미지의 이름은 자신이 속해있는 '저장소 ..

개요본 글에서는 Jenkins Pipeline과 Docker를 이용하여 빌드하는 과정에서 다루어진 디렉터리 또는 파일이 삭제되지 않고 남는 문제에 대한 원인 추적 및 해결 사항을 공유해드리려 합니다. 문제 사항현재 소속된 사내에서는 여러 개의 VM에 Jenkins 실행시켜 다중으로 운영 중이며 Jenkins의 Pipeline을 사용하여 워크플로우를 정의하고 정의된 파이프라인 워크플로우를 실행하여 빌드 및 배포를 수행시키고 있습니다.문제는 정의된 파이프라인 워크플로우의 모든 작업이 수행된 이후 작업 과정에서 발생한 결과물이 제거되도록 구현되어 있었지만 특정 결과물만이 삭제되지 않고 남아 디스크를 차지하고 있다는 점이였습니다.Workflow(워크플로우)빌드, 테스트, 배포 등의 과정을 일련의 단계로 자동..

⚠️ 해당 글을 읽기전 유의 사항 본 글은 관리형 쿠버네티스 서비스(EKS, GKE)를 사용하지 않고 VM 또는 온프레미스의 offline(폐쇄망)환경에서 쿠버네티스를 구축하기 위한 내용으로 구성되어 있습니다. 전체 설치되는 과정은 root가 아닌 일반 사용자 권한으로 진행했습니다. 본 글에서 사용하는 ‘자원’이라는 용어는 구동중인 VM을 의미합니다. 본 글에서는 쿠버네티스 클러스터를 구축하기 위한 kubeadm init, kubeadm join, CNI 구축을 진행하는 내용을 포함하지 않습니다. 1. 기본 정보 개발환경 및 클러스터 정보 OS : Ubuntu 22.04.3 LTS (x86-64) 쿠버네티스 버전 : v1.28.2 배포 도구 : Kubeadm 컨테이너 런타임 : CRI-O 이미지 관리 :..

들어가기 이번 글에서는 최근 진행했던 프로젝트(분양 웹서비스)에서 게시글 조회 API를 쿼리 튜닝을 통해 개선한 경험을 공유하려 합니다. 본 글은 아래와 같은 사항을 고려하시는 분들께 조금 더 도움이 될 것 같습니다. - 게시판 목록 조회 시 게시글 데이터 및 관련된 추가 데이터(좋아요수, 댓글수) 등을 함께 조회하고자 하는 분 - 기존 아키텍쳐는 유지하면서 쿼리 및 ORM 코드만 변경하여 단기간 조금 더 나은 성능 개선을 원하시는 분 개선 배경 현재 펫허브 서비스는 무중단 배포로 운영되고 있으며, 일간 사용자는 3인 이하입니다..(이는 팀원수와 일치합니다 haha..) 현재와 같이 게시글이 거의 추가되지 않는 상태일 경우 게시판 조회시 체감 응답지연시간은 오래걸리지 않습니다. 하지만 미래의 사용자수가 ..

이번글에서는 현재 진행 중인 애완동물 분양 플랫폼 프로젝트에서 백엔드 API를 개발중 발생하는 중복 및 단순 매핑 코드들을 최소화하기 위한 개선 시도 및 결과에 대해 공유드리겠습니다. 개선 전 상황과 목표 JPA를 사용시 Entity 클래스를 통해 데이터베이스와 매핑함으로 Entity를 외부에 노출시 데이터 무결성 및 보안 그리고 캡슐화에 좋지 않습니다. 이러한 외부 노출을 피하기 위하여 dto를 이용하며 dto to entity 또는 entity to dto 와 같은 매핑 로직을 통해 데이터를 주고 받습니다. 하지만 이러한 매핑 과정이 많은 비용을 발생시키고 있다고 판단하였으며 어떻게 최소화 할 수 있을까 고민했습니다. 또한, 현재 프로젝트에서는 총 3개의 이미지 테이블을 사용하고 있으며 5개의 컬럼이..
- Total
- Today
- Yesterday