본문 바로가기

전체 글

도커 실습(2) 로컬환경에서 도커 이미지 만들고, 도커 컨테이너 실행하기 1. application.yml파일에 작성된 내용 분리-application.yml, datasource.yml, eureka.yml, jpa.yml, server.yml2. 도커 실습하기 위한 준비 과정- local 환경에서 빌드 도구 사용해서(gradle) hospital-service 어플리케이션을 실행가능한 파일로 만들기- 생성된 hospital-service 실행 파일을 Java 명령어를 이용해서 실행해보기# *.jar 파일(자바 실행파일) 만드는 명령어# 루트 프로젝트에 build 디렉토리가 만들어진다.# build 디렉토리 안에 libs 디렉토리 안에 해당 서비스(hospital-service)의 실행파일(*.jar)이 만들어진다.... 더보기
docker 관련 정리(1) docker도커를 사용하는 이유- 애플리케이션 개발과 배포가 쉬워진다.도커 컨테이너 내부에서 여러 애플리케이션을 설치해도 호스트 OS에는 영향이 없다.*호스트 OS란 컴퓨터에 직접 설치된 운영체제를 의미한다.*도커는 전체 OS를 따로 설치하지 않고, 호스트 OS의 터널을 공유한다. 그래서 도커는 훨씬 빠르고 가볍다.*도커는 호스트 OS위에서 실행되는 어플리케이션(도구)이다.[호스트 OS와 도커의 관계: 위에서 아래로]1. [실제 컴퓨터: 물리머신]2. [호스트 OS: ex. Ubuntu, Windows, macOS]3. [Docker Engine: ex. 도커 데몬, 도커 CLI]4. [Docker Container들]- 도커를 사용하면 어떤 서버에 올리더라도 같은 환경으로 구성된 컨테이너로 동작하기 때.. 더보기
4계층, JPA와 리플렉션, JPA auditing 기술 계층 분리공책에 기록할 수 있는 필기구 즉, 연필, 볼펜 등은 첫 번째 서랍장에기록을 수정할 수 있는 역할인 지우개, 화이트 등은 두 번째 서랍장에 두는 등기준을 정의하고, 그 기준에 부합한 것들끼리 분리해 놓는 것이어플리케이션을 설계할 때도 존재한다. 이를 계층(Layer)이라 하고,이번 프로젝트에서는 3계층(controller, service, repository)이 아닌4계층(presentation, application, domain, infrastructure)으로 진행하였다.4계층으로 프로젝트 개발을 진행하면서 알게된 것들을 기록하는 차원에서 정리하게 되었다. 4계층은 presentation, application, domain, infrastructure로 구성된다.presentation l.. 더보기
2025년 4월 7일 - StringUtils.hasText(String str) 메서드전달된 문자열 타입 매개변수가 1. null 이 아니어야 하고,2. 빈 문자열("")이 아니어야 하고, 3. 빈 공백으로 구성된 문자열("    ")이 아니어야true 를 반환하는 기능을 갖는다.*** 이제까지 isBlank() 메서드가 null, 빈 문자열, 공백으로 이루어진 문자열을 체크하는 메서드라고 생각했는데,isBlank() 메서드는 빈 문자열인지 공백으로 이루어진 문자열인지 2가지만 체크하는 기능이라는 걸 알게되었다.String.isBlank() 메서드를 사용하기 전에는 문자열 타입의 참조변수의 null 여부를 먼저 체크해야 한다는 사실을 알게됨.// String.isBlank() 사용법// 클라이언트로부터 데이터를 받는 경우에.. 더보기
MSA(Microservice Architecture)_컨피그 서버(Config Server) Spring Cloud Config스프링 클라우드 컨피그는 분산 시스템 환경에서(ex. MSA 방식이 적용된 애플리케이션)중앙 집중식 구성관리를 제공하는 프레임워크다. 각 애플리케이션의(ex. 주문 서비스, 배달 서비스...)└ 모든 마이크로서비스의 설정을(각 서비스의 야믈파일에 작성한 설정값을) 중앙에서(Spring Cloud Config) 관리한다.설정을(*.yml) 중앙에서 관리하고, 변경사항을 실시간으로 반영할 수 있다.Git, 파일 시스템, JDBC 등 다양한 저장소에서 중앙에서 관리하는 설정파일을 저장하고, 수정하고 관리할 수 있다.  Config 서버 구성1. 각 서비스의 설정들을 해당 어플리케이션에서 관리하려면 의존성이 필요하고,build.gradle 에 Spring Cloud Config.. 더보기
MSA(Microservices Architecture) 서킷브레이커 로드밸런싱 수행 과정Eureka와 FeignClient를 함께 사용하면 동적으로 서비스 인스턴스를 조회하여 로드 밸런싱을 수행한다.→ (spring cloud 환경에서) FeignClient는 Eureka에 등록된 서비스 인스턴스 목록을 동적으로 조회하고,로드 밸런싱 기능을 수행하는 리본과 자동으로 연동되어 리본이 로드 밸런싱을 수행한다.1. @FeignClient(name="product")→ Feign이 Eureka에 등록된 서비스 목록에서 이름이 product인 서비스를 찾아 해당 인스턴스 정보를 가져온다.2. FeignClient는 Ribbon(로드 밸런싱 기능을 수행)과 연동되어 로드 밸런싱을 수행한다.기본적으로 spring cloud 환경에서 Feign과 Ribbon은 자동으로 연동된다.Eur.. 더보기
MSA(Microservices Architecture) 서비스 디스커버리, 로드 밸런싱 Micro(아주 작은) 단위의 서비스(services)들로 설계된(architecture) 어플리케이션                                              └ 기능 단위의 어플리케이션 ex. 주문 관련 어플리케이션, 유저 관련 어플리케이션모놀리틱 아키텍쳐는 하나의 큰 코드베이스로 구성된 애플리케이션 → 하나의 어플리케이션에 여러 기능들이 포함되어 있다.예를 들어 배달 어플리케이션에 유저 관련 기능(ex. 회원 가입, 로그인 등), 주문 기능, 상품 기능 등이 모두 포함되어 있다.이를 MSA로 전환? 하게 되면 아주 작은 서비스 단위의 구조로 설계할 수 있다.예를 들면 유저 기능 어플리케이션, 주문 기능 어플리케이션 등 아주 작은 서비스 단위로 나누어서 개발을 하고,개발한 서비.. 더보기
2025년 3월 10일(월) CI/CD는 Continuous Integration, Continuous Delivery, Continuous Deployment의 약어로(코드의) 지속적인 통합, 지속적인 (서비스) 제공, 지속적인 배포를 의미한다.코드를 통합하는 과정, 테스트하는 과정, 배포 과정 모두 자동화를(automated) 통해 이루어진다.→ 코드의 지속적인 통합(CI)은 코드의 변경 사항을 소스코드를 공유하는 리포지토리(저장소)에자동으로 자주 통합하는 과정을 나타내고, 지속적인 (서비스) 제공 및 배포(CD)는코드 변경 사항의 통합, 코드 테스트, 테스트한 소스코드를(서비스) 제공하는 과정을 의미한다. CI/CD 파이프라인은 개발자들의 코드 변경 사항을 빠르게 통합하고(CI)자동화된 테스트를 통해 예상대로 동작하는지(기능이.. 더보기