[Docker] 도커 컴포즈(Docker Compose) & 볼륨(Docker Volume) (2)
·
Development/개발 공부
지난 포스팅에서는 도커의 기본 개념에 대해 알아보았다.이전 글 참조 | 2026.03.29 - [Development] - [Docker] 도커(Docker)란?오늘은 도커 컴포즈(Docker Compose)와 도커 볼륨(Docker Volume)에 대해 알아보도록 하겠다. 도커 컴포즈(Docker Compose)저번 시간에는 하나의 컨테이너를 빌드하고 실행하는 방법에 대해 살펴보았다.하지만 실제 애플리케이션 환경에서는 하나의 컨테이너만으로 모든 서비스를 구성하기란 어렵다..도커 컴포즈(Docker Compose)는 여러 개의 도커 컨테이너를 모아 한 번에 띄울 수 있게 해주는 도구이다. 도커 컴포즈의 역할은 다음과 같다. 여러 컨테이너 관리도커 컴포즈는 여러 개의 도커 컨테이너를 하나의 설정 파일(do..
[Docker] 도커(Docker)란? (1)
·
Development
지금부터 도커의 개념에 대해서 알아보도록 하겠다.필자는 배워가는 단계이기에 입문 용도로 보는 것을 추천한다.. 도커(Docker)의 정의도커는 애플리케이션을 컨테이너로 패키징해 실행할 수 있게 해주는 가상화 플랫폼을 의미한다.기존에는 독립된 환경을 구축하기 위해 VM(가상머신)을 사용했다.[참고] 2025.08.27 - [Development/개발 공부] - 가상 머신(VM, Virtual Machine) 하지만 VM마다 OS가 포함되기 때문에 많은 리소스와 비용이 소모된다.이러한 단점을 방지하기 위해, OS를 공유하면서도 각 애플리케이션의 실행 환경을 독립적으로 구성할 수 있는 도커가 등장하였다. 이미지(Image)와 컨테이너(Container)도커의 이미지와 컨테이너에 대해 알아보도록 하자. 이미지..
[JPA] JPA 쿼리 (3)
·
Development/개발 공부
이번에는 "데이터 조회나 변경 같은 DB 작업을 자바 코드로 구현"하는 방식과, 해당 과정에서 주의해야 할 점에 대해 알아보도록 하겠다. JPA로 쿼리 수행원하는 데이터를 가져오려면 쿼리를 수행해야 하는데, JPA는 이러한 쿼리 수행을 자바 코드에서 처리할 수 있도록 도와준다.기본적인 사용 방법은 다음과 같다.@Repository@Transactionalpublic class MemberJpaRepository { @PersistenceContext private EntityManager entityManager; // 행 삽입 public void insert(Member member) { entityManager.merge(member); } // 행 조회 public Member findBy..
[JPA] 엔티티(Entity) 매핑 (2)
·
Development/개발 공부
우리는 지난번 JPA에 대한 개념과 핵심 용어에 대해서 알아보았다.이전 글 참조 | 2026.02.08 - [JPA] - [JPA] JPA(Java Persistence API)란? (1) 이번에는 JPA를 실제 코드로 다뤄보면서, JPA를 사용할 때 주의해야 할 점에 대해 알아보려 한다. 그전에 JPA를 왜 사용하는지에 대해 한번 더 짚고 넘어가자!JPA는 ORM(Object-Relational Mapping) 기술을 통해 자바 코드 레벨에서 데이터베이스를 다룰 수 있게 해준다.따라서 JPA에서 가장 중요한 포인트는 다음 두 가지이다.DB 테이블 구조를 자바 객체, 즉 엔티티로 매핑하는 것데이터 조회나 변경 같은 DB 작업을 자바 코드로 구현하는 것이제 위의 두 가지 관점을 기준으로 JPA에 대해 구체..
[Kafka] 카프카 활용, 예제 (with SpringBoot) (2)
·
Development/프로젝트
이전 포스팅에서는 카프카의 개념, 원리를 알아보았다.2026.03.01 - [Development/프로젝트] - [Kafka] 카프카의 기본 개념, 원리 (1) 이번 시간에는 직접 구현해보면서, 실제로 어떻게 동작하는지 살펴보도록 하자. 카프카 활용먼저, 카프카의 활용 방식에 대해 소개하도록 하겠다. 로그, 티켓팅 시스템 등 대용량 트래픽 처리카프카는 파티션을 통한 수평 확장(Scale-out)이 가능하다.또한 파티션마다 데이터가 순차적으로 쌓이기 때문에, 대용량 트래픽을 효율적으로 처리할 수 있다. 토픽 별 관심사 분리카프카에서 이벤트가 발생할 때 비즈니스 로직을 고려해서 토픽을 나누면, 각 서비스의 역할이 분리된다.만약 주문, 배송, 결제 데이터가 하나의 토픽에 들어가 있으면, 각 서비스가 자신과 관..
[Kafka] 카프카의 기본 개념, 원리 (1)
·
Development/프로젝트
카프카의 기본 개념과 원리에 대해 알아보는 시간이다. 카프카의 정의카프카란 고성능 분산 이벤트 스트리밍 플랫폼이다.❓ ❓처음 카프카를 공부하기 시작했을 때는, 저 단어들이 무슨 의미인지 전혀.. 감이 오지 않았다;;뒤에 언급하겠지만, 쉽게 말하면 대용량의 데이터를 안정적으로 저장 및 전달할 수 있게 해주는 시스템이다.데이터 전달에만 초점을 둔 RabbitMQ와는 달리, Kafka는 서버에 데이터를 저장할 수 있다는 장점이 있다! 카프카 기본 용어카프카와 관련된 기본적인 용어들을 살펴보자! 레코드(Record)레코드는 카프카에서 다루는 데이터로, 메시징 큐에서의 메시지와 같은 개념이라고 볼 수 있다.하지만 데이터라고 해서 단순히 하나의 값만 담고 있는 것은 아니다. 레코드의 기본 구성은 다음과 같다.Ke..
[JPA] JPA(Java Persistence API)란? (1)
·
Development/개발 공부
JPA의 개요(개념과 동작 원리)를 알아보도록 하자. JPA 정의JPA에 대해서 알아보기 전에, ORM이 뭔지 짚고 넘어가야 한다. ORM(Object-Relational Mapping)이란 객체(Object)와 관계형 데이터베이스(RDB)에서 사용되는 데이터를 자동으로 매핑하여 변환하는 기술이다.ORM을 사용하는 이유는 객체와 관계형 데이터베이스 간의 패러다임이 일치하지 않기 때문이다.객체는 상속과 참조를 사용하는 반면, 관계형 데이터베이스는 외래키를 사용하기 때문이다. JPA는 이러한 ORM을 사용하여 객체와 관계형 데이터베이스 간의 패러다임 불일치를 해결하고,객체 지향적인 설계에 집중할 수 있게 해주는 표준 인터페이스를 의미한다! JPA를 사용하면, find(조회) / merge(삽입) / rem..
[Git] 깃 브랜치 전략(Git Flow, Github Flow)(+TBD)
·
Development/개발 공부
개발자들이 프로젝트를 진행하면서 협업할 때는 안정적이고 효율적인 프로젝트 관리를 추구해야 한다.이때 깃 브랜치 전략을 도입한다면, 버전을 체계적으로 관리하고 충돌을 최소화할 수 있다.대표적인 깃 브랜치 전략인 Git Flow, Github Flow와 TBD(Trunk-based Development)까지 알아보자 ! 깃 플로우(Git Flow)깃 플로우는 복잡한 프로젝트에서 브랜치를 체계적으로 관리하기 위한 브랜치 전략이다. 위 그림처럼 깃 플로우는 총 5가지의 브랜치 종류를 가지고 있다.유지 기간에 따라 메인 브랜치(master, develop)와 보조 브랜치(hotfix, release, feature)로 나눌 수 있다.(메인 브랜치는 항상 유지되는 반면, 보조 브랜치는 특정 작업이 진행되는 기간 ..
AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)
·
Development/개발 공부
AOP란?AOP를 알기 위해서는 먼저 횡단 관심사에 대해 알아야 한다.횡단 관심사란 "애플리케이션의 여러 모듈(클래스·메소드)에 걸쳐 나타나는 부가적인 기능"을 의미한다.가령 로깅, 보안, 트랜잭션 관리, 성능 모니터링 등등.. 처럼 말이다. 기존의 OOP 방식은 횡단 관심사 코드가 여러 비즈니스 로직에 반복적으로 삽입되었다.메소드 내에 지속적으로 로그(log) 같은 것을 삽입하게 되면, 코드의 중복이 발생하며 가독성이 떨어진다. AOP는 이런 횡단 관심사를 모듈로 분리하기 위해 등장하였다.즉, 애플리케이션의 핵심 비즈니스 로직과 여러 모듈에 걸쳐 공통적으로 사용되는 부가 기능(횡단 관심사)을 분리화하여 모듈화하는 프로그래밍 방식이다. AOP의 장점1. 모듈성 향상: 비즈니스 로직만 존재하기 때문에 로직..
[NoSQL] Redis란?
·
Development/개발 공부
Redis란?Redis는 인메모리 기반의 Key-Value NoSQL 데이터베이스이다.인메모리 데이터베이스는 데이터를 RAM에 저장하기 때문에 접근 속도가 빠르다. 하지만 프로세스가 종료될 시, 데이터가 휘발될 수 있다.때문에, 휘발되더라도 큰 문제가 없는 캐시(Cache)나 실시간 데이터 처리 용도로 많이 사용된다. Redis 특징1. 영속성(Persistence)이라는 기능을 제공해 데이터가 휘발되는 것을 방지할 수 있다. Redis는 기본적으로 데이터가 유실될 수 있다.하지만 스냅샷(SnapShot·RDB)과 AOF를 통해 데이터 유실을 방지할 수 있다. 스냅샷(SnapShot·RDB)은 특정 시점마다 전체 데이터를 디스크에 저장한다.하지만 이 방식도 데이터는 유실될 수 있다.(스냅샷 사이에 시스템..