본문 바로가기

전체 글102

[Docker] Dockerfile 스크립트로 이미지 만들기 & 배포 Dockerfile 스크립트로 이미지 만들기Dockerfile 스크립트를 작성하고 이 스크립트를 빌드해 이미지를 만드는 방법이다. 주요 Dockerfile 인스트럭션인스트럭션내용FROM토대가 되는 이미지를 지정ADD이미지에 파일이나 폴더를 추가COPY이미지에 파일이나 폴더를 추가RUN이미지를 빌드할 때 실행할 명령어를 저장CMD컨테이너를 실행할 때 실행할 명령어를 지정ENTRYPOINT컨테이너를 실행할 때 실행할 명령어를 강제 지정ONBUILD이 이미지를 기반으로 다른 이미지를 빌드할 때 실행할 명령어를 지정EXPOSE이미지가 통신에 사용할 포트를 명시적으로 지정VOLUME퍼시스턴시 데이터를 저장할 경로를 명시적으로 지정ENV환경변수를 정의WORKDIRRUN, CMD, ENTRYPOINT, ADD, CO.. 2025. 3. 11.
[Docker] Docker Compose Docker Compose : 여러 개의 컨테이너를 한 번에 정의하고 관리할 수 있는 도구 보통 애플리케이션은 데이터베이스, 백엔드, 프론트엔드 등 여러 컨테이너로 구성되는데, 이를 하나의 docker-compose.yml 파일에서 관리할 수 있도록 도와준다= 하나의 명령어로 여러 개의 컨테이너를 실행하고, 네트워크 및 볼륨을 자동으로 설정 docker-compose.yml 서비스(컨테이너), 볼륨, 네트워크 등을 정의하는 구성 파일docker-compose.yml 문법services: 컨테이너 이름: image: 실행할 이미지 environment: - 변수이름:값 volumes: - 본체경로:컨테이너경로 ports: - 본체포트:컨테이너포트 co.. 2025. 3. 10.
[Docker] Docker 개념 및 설치 Docker란?도커(Docker) : 컨테이너 기반 가상화 플랫폼으로 응용 프로그램과 그 종속성을 격리된 환경인 컨테이너로 패키징하여 실행하는 기술 도커 주요 개념컨테이너 애플리케이션과 그 종속성(라이브러리, 설정 파일 등)을 포함하는 독립적인 실행 환경 컨테이너는 격리된 환경에서 애플리케이션을 실행할 수 있도록 해주며, 이를 통해 애플리케이션이 어떤 시스템에서 실행되더라도 동일한 방식으로 동작할 수 있도록 보장한다.이미지컨테이너를 생성하기 위한 템플릿Dockerfile도커 이미지를 빌드하기 위한 설정 파일 Dockerfile에는 애플리케이션을 실행하기 위해 필요한 소프트웨어와 라이브러리 설치 방법, 환경 설정 등을 단계별로 정의한다.도커 엔진(Docker Engine)컨테이너를 실행하고 관리하는 소프트.. 2025. 3. 10.
한화시스템 Beyond SW Camp 12기_15주차 회고 (2025.03.04~2025.03.07) 한화시스템 Beyond SW Camp 12기 15주차가 끝났다.이번 주는 MSA 수업이 끝남과 동시에 백엔드 프로젝트를 진행하였다. 백엔드 프로젝트에서 신경쓸 게 한 두가지가 아니였었다. 데이터베이스 프로젝트 이후로는 구성해놨던 테이블 구조를 따로 바꾼적이 없었는데 백엔드 프로젝트를 하다보니 데이터베이스 테이블 구조가 효율적이지 않다고 생각도 들었다. 그리고 프로젝트를 하다가 가장 중요하다고 느낀 것은 여러 사람이 같이 개발을 하다 보면 각자 맡은 부분에 대한 이해도가 다를 수 있기 때문에 API 명세서를 명확하고 체계적으로 작성하는 것이 정말 중요하다고 느꼈다. 특히, API의 요청과 응답 형식, 파라미터 값, 예외 처리 등을 자세히 설명하는 것이 중요하다고 생각이 들었다. 막상 프로젝트가 마무리 되어.. 2025. 3. 10.
[Spring Boot] CQRS (Command Query Responsibility Segregation) 기반 이벤트 소싱 CQRS (Command Query Responsibility Segregation) CQRS는 명령과 조회를 분리하여 시스템을 더 효율적이고 확장 가능하게 만들 수 있는 패턴 Command (명령) : 데이터 변경하는 작업. C, U, D 작업-> Kafka를 사용해 이벤트 발행Query (조회) : 데이터를 읽는 작업. R 작업-> Kafka 메세지를 구독해 데이터 반영 CQRS 패턴을 기반으로 한 이벤트 소싱 + Kafka 구조 구현프로젝트 구조프로젝트는 루트 프로젝트 아래에 데이터 변경 작업만 하는 board-command-service 모듈과 데이터 읽는 작업만 하는 board-query-service 모듈로 구성하였다. 의존성 주입 (build.gradle)implementation 'org... 2025. 3. 4.
한화시스템 Beyond SW Camp 12기_14주차 회고 (2025.02.24~2025.02.28) 한화시스템 Beyond SW Camp 12기 14주차가 끝났다.이번 주는 Sping Boot 수업이 끝났고 MSA에 대해서도 배웠다. Spring Boot 수업에서는 중요한 개념 중 하나인 동시성 제어와 N+1 문제 해결 방법을 배우면서 이를 실제 프로젝트에도 적용해보았다. N+1 문제를 해결하는 과정에서 단순히 fetch join이나 EntityGraph 등을 활용하는 것만이 아니라 연관 관계의 주인이 아닌 테이블에서 쿼리를 실행할 경우 예상과 달리 연관된 테이블들이 즉시 로딩 방식으로 동작하는 것을 발견했다. 처음에는 하나의 쿼리만 실행될 것이라고 생각했는데 실제로는 추가적인 쿼리들이 자동으로 실행되는 것을 확인할 수 있었다. 이 문제를 해결하기 위해 엔티티를 지연 로딩으로 실행하라고 명시적으로 애노.. 2025. 3. 3.