클래스 다이어그램(Class Diagram) 정리
클래스 다이어그램 접근제어자 표기법 - : private + : public # : protected 클래스 간의 관계 일반화 관계 (Generalization) 실체화 관계 (Realization) 의존 관계 (Dependency) 연관 관계 & 직접 연관 관계 (Association & Direct...
클래스 다이어그램 접근제어자 표기법 - : private + : public # : protected 클래스 간의 관계 일반화 관계 (Generalization) 실체화 관계 (Realization) 의존 관계 (Dependency) 연관 관계 & 직접 연관 관계 (Association & Direct...
최근 MSA에서의 주요 기술 중 메시지 지향 미들웨어(Message-Oriendted Middleware, MOM)에 대해 공부하면서 Spring Boot에서 Kafka를 이용해 데이터를 처리한 내용을 적어봅니다. 메시지 지향 미들웨어(Message-Oriented Middleware, MOM) MOM이란 분산 시스템에서 메시지를 안전하고 신뢰성 ...
2022년에 지인과 함께 재고관리 시스템을 만들었을 때 수동으로 API 문서를 작성했습니다. 지금 생각해보면 API 문서를 자동화할 수 있는 기술에 대해 찾아보자는 생각도 없이 예전 경험만 생각해서 작업했네요. Spring Boot에 대해서 공부하면서 Swagger에 대해 알게되었고 재고관리 시스템의 일부 API에 적용한 내용을 정리해보고자 합니다....
이전 게시물에서 Docker를 이용한 Redis Master/Replica(Slave), Sentinel 환경 구축 및 AOF 매커니즘을 이용한 백업에 대해 보았습니다. 구축한 환경을 기반으로 이번 게시물에서는 Spring Boot에서 Redis 캐싱 설정 및 처리를 해보겠습니다. Redis Master / Replica(Slave), Sent...
작년에 재고 관리 시스템 버전을 업그레이드하면서 Redis를 사용했습니다. 당시에는 단순히 토큰관리 용도로만 사용했지만, 인메모리 DB Redis를 이용해 서비스를 운영할 때 어떠한 기술을 이용할 수 있는지 그리고 AOF 매커니즘으로 어떻게 백업을 해야하는지에 대한 공부를 하면서 내용을 정리해보았습니다. Redis란? Redis란 오픈 소스 인메모...
JPA + Spring Data JPA 사용해보기(Dynamic Query, Paging, Sort)에서 Spring Data JPA에서의 동적 쿼리, 페이징, 정렬에 대한 내용을 포스팅했습니다. 이번에는 Spring Data JPA의 Join에 대해 적어보겠습니다. JPA + Spring Data JPA 사용해보기(Dynamic Query, ...
JPA + Spring Data JPA 사용해보기(1)에서 기본적인 CRUD에 대한 내용을 포스팅했습니다. 이번에는 Spring Data JPA Query Method의 조건절 및 동적 쿼리, 페이징 및 정렬에 대해 적어보겠습니다. JPA + Spring Data JPA 사용해보기(CRUD) Query Method Spring Data J...
이전 글에서 Github Actions CI/CD 환경을 구축하고 배포를 해보았습니다. 이번 글에서는 이전 글에서 구축한 CI/CD 파이프라인을 이용해 Nginx를 이용한 무중단 배포를 적용한 경험을 적어봅니다. Spring Boot + Docker + Github Actions를 활용한 CI/CD 환경 구축 먼저, 무중단 배포란 무엇이고 ...
재고관리 시스템을 운영할 때 초기에는 개발 기간이 짧아 급한대로 수동배포를 했으나, 빌드/테스트 과정에서 체크해야하며 배포 과정에서 불필요한 설정도 같이 배포되어 재작업으로 인한 많은 시간소요와 불편함이 있어 당시에 구축한 CI/CD 환경을 정리해보고자 합니다. 환경 구축 전 CI/CD에 대한 정의를 보겠습니다. CI/CD CI란? CI는 간단...
이전 게시물에서 Querydsl이 무엇이고 사용방법에 대해 내용을 정리해보았습니다. 이번에는 Querydsl에서 Paging, Dynamic Query, MySQLDialect를 통한 Full-text Index를 이용한 검색에 대해 정리해보고자 합니다. 프로젝트는 Spring Data JPA + Querydsl 사용해보기(1)와 동일한 환경으로 ...
Querydsl란? Querydsl는 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해 주는 프레임워크다. SQL을 직접 작성하거나 XML 파일에 쿼리를 작성하는 대신, Querydsl이 제공하는 플루언트(Fluent) API를 이용해서 쿼리를 생성할 수 있다. 단순 문자열과 비교해서 Fluent API를 사용할 때의 장점은 다음과 ...
개발환경 및 프로젝트 세팅 개발 환경 및 프로젝트 세팅은 JPA + Hibernate와 동일하게 이용하겠습니다. JPA + Hibernate 사용해보기 신규 테스트 클래스 생성 JpaSpringDataJpaApplicationTests.java 테스트용 설정 파일(application-test.yml)을 따로 생성하여 설정해주는 것이 ...
개발 환경 IDE : IntelliJ IDEA (Community Edition) JDK : Java 17 Framework : Spring Boot 3 DB : MySQL 8.0 DBCP : HikariCP Spring Project 생성 Spring Initializr 웹 도구 사이트(https://spring.io)에서...
JPA를 보기전에 ORM Object Relational Mapping의 약자로 말 그대로 객체와 데이터베이스의 관계를 매핑하는 것이다. 비교하자면 SQL Mapper 예로 MyBatis를 사용할 때 SQL을 직접 작성하여 데이터를 조작하면 단순히 필드에만 매핑된다. 반면에, ORM은 RDB 관계를 Object에 매핑을 목적으로 객체와 테이블을 ...
Github Page Repository 생성 아래 링크에서 파일을 다운로드 받거나 Web URL을 복제하여 로컬 리포지토리를 만들어준다. fork 후 Repository를 Clone해도 됩니다. Theme : http://jekyllthemes.org/themes/jekyll-theme-chirpy Github : https://gith...
개발 환경 IDE : IntelliJ IDEA (Community Edition) JDK : Java 17 Framework : Spring Boot 3 DB : MySQL 8.0 DBCP : HikariCP Spring Project 생성 Spring Initializr 웹 도구 사이트(https://spring.io)에서...
Intro 회사 생활 초반에 자주 발생한 문제였던 Transaction에 대해서 다루고자 한다. 당시에는 JavaBean 기반의 프로젝트에서 Spring으로 넘어간지 오래되지 않았을 때이다. 트랜잭션는 처리가 되어있었으나, 시간이 지날수록 DB Pool 이슈와 롤백 이슈가 있는 시스템이 있어 확인했을 때 잘못된 사용으로 개선하기도 했었다. Spri...
Intro 개발자로서 벌써 5년의 시간이 지나고 퇴사한 지 2달이 지났습니다. 저는 2018년 8월에 첫 회사에 입사하여 10개월간 연구개발팀 그리고 이직하여 2019년 6월을 시작으로 4년 6개월 동안 개발팀으로 근무하고 2023년 11월 20일에 퇴사하게 되었습니다. 이번 기회를 통해 5년 동안 회사 생활을 회고하면서 저 자신을 다시 돌아볼 ...