⚠️ 해당 글을 읽기전 유의 사항 본 글은 관리형 쿠버네티스 서비스(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개의 컬럼이..
이번 글에서는 현재 진행중인 애완동물 분양 플랫폼 프로젝트에서 이미지가 포함된 게시글을 등록시 발생하는 유저 체감 지연시간을 최소화하자는 목표로 서비스 로직을 설계한 과정과 결과에 대해 공유드리겠습니다. 이미지 업로드 및 삭제 API 구현을 위한 백엔드 인프라 환경 및 사용기술은 아래와 같습니다. Sever Infra : AWS EC2/Linux, AWS S3 Proxy Server : Nginx 1.22. WAS : tomcat (scale out - blue/green) Language : Java 11 Framwork : Spring Boot 2.7.11 ORM : Spring Data JPA DB : MySQL(Master/Slave) CI/CD : Github Actions, AWS S3&Cod..
오늘은 현재 진행중인 애완동물 분양 플랫폼 프로젝트의 알림기능을 구현시 발생한 문제와 3주간의 추적을 통한 해결과정에 대해 공유드리려 합니다. 알림 기능 구현을 위한 백엔드 인프라 환경 및 사용기술은 아래와 같습니다. Sever Infra : AWS EC2/Linux Proxy Server : Nginx 1.22. WAS : tomcat (scale out - blue/green) Language : Java 11 Framwork : Spring Boot 2.7.11 ORM : Spring Data JPA DB : MySQL(Master/Slave) CI/CD : Github Actions, AWS S3&CodeDeploy 비즈니스 요구사항 및 목표 현재 프로젝트에서는 기본 커뮤니티 게시판, 분양 소통 ..
오늘은 pagination개발을 위해 Spring에서 제공하는 Pageable & Slice interface 를 분석한 내용을 공유해보려합니다. Pageable Pageable은 org.springframework.data.domain에 포함된 interface로써 PageRequest라는 별도의 구현체가 존재합니다. PageRequest pageRequest = PageRequest.of(1,10); Pageable pageableT0PageRequest = PageRequest.of(1,10); Pageable pageableT0PageRequest = Pageable.ofSize(10); Pageable은 PageRequest의 정적 팩토리 메서드(.of)를 사용하여 PageRequest 또는 P..
- Total
- Today
- Yesterday