본문 바로가기
반응형

프로그래밍이야기/Spring10

[Spring&JPA] 이력 구현해보기 데이터베이스를 사용하면서 이력 관리를 위해서 이력 테이블을 사용하는 일들이 많이 있습니다. 먼저 이력 관리에 대해서 알아보고 이력의 종류는 어떤것이 있는지도 알아보겠습니다. 그리고 마지막으로 이력 관리를 위한 구현 방법에 대해서 알아보겠습니다. 이력 관리 데이터는 현재의 프로세스만 처리하고 버리는 것이 아니라 각 상태의 따른 데이터를 처리 및 기록합니다. 예를 들어, 주문 상태의 따른 이력 정보가 있다고 가정하였을 때, 이 주문 정보는 임시저장, 주문 등록, 주문 접수, 진행 중, 주문 완료, 주문 취소 등 각각의 상태에 따라 이력이 관리 됩니다. 이렇게 각 상태의 대한 이력을 기록하고 관리하는 것을 이력 관리라고 합니다. 이력 관리 대상 선정 이력 관리를 한다고 하면 하지 않았을 때와 비교하였을 때 많.. 2022. 8. 21.
[Spring] 비동기(@Async) API 처리 예시 비동기 처리를 위한 API 설계를 위해서 개념과 관련된 내용에 정리를 진행한 후 Spring boot를 이용하여서 비동기 처리를 위한 방식에 대해서 예제를 진행하면서 정리해보도록 하겠습니다. 먼저, 동기와 비동기에 대한 개념부터 정리해보도록 하겠습니다. 동기와 비동기 비동기는 데이터의 요청과 결과과 동시에 일어나지 않는다는 것을 의미합니다. 동기는 데이터의 요청과 결과가 한 자리에서 동시에 일어나는 것을 이야기합니다. 개념적인 부분도 의미를 파악해볼순 있겠지만 예시를 들어서 좀 더 설명을 해보도록 하겠습니다. 비동기 커피숍에서 커피를 마시기 위해서 커피숍에 들어갔습니다. 커피를 주문받는 직원과 커피를 만드는 바리스타 직원이 있습니다. 커피를 주문받는 직원에게 커피를 주문하니 진동벨을 주었고 주문받은 커피.. 2022. 7. 23.
[Springboot] 어플리케이션 환경설정 profile 별 관리방법 SpringBoot를 사용하면서 application.yml 을 많이 사용합니다. 실제 프로젝트 환경에서는 로컬, 개발, 품질, 운영 환경으로 관리하기 때문에 서버별로 습관적으로 환경설정 파일을 분리하여서해서 profile 수만큼 application.yml 을 생성해서 사용하였습니다. 물론, 이렇게 사용하면서 지금까지 문제되는 사항은 없었습니다. 하지만 공통적으로 설정된 정보가 변경되었을시에 해당 파일만큼 수정을 해야한다는 것이 불편하게 느껴졌습니다. 만약 공통설정 정보를 따로 관리한다면 어떻게 될까요? profile 의 종속적인 설정 정보를 제외한 공통 환경 설정 정보를 따로 관리하여서 만약 정보가 변경된다면 공통 설정 정보만 변경하여도 모든 profile의 환경 설정 정보가 반영이 됩니다. 외부 설.. 2022. 6. 23.
[Spring] Injection 정리 [Spring] Injection 정리 Spring에서 제공하는 Injection 에 대해서 정리를 하고 추천하는 사용 방식에 대해서 말씀을 드리도록 하겠습니다. 아래에서 사용되는 소스는 모두 GitHub에서 확인할 수 있습니다. - 소스 Spirng에서 제공하는 Injection 은 여러가지 방법을 이용할 수 있습니다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 각각 하나씩 직접 생성해보면서 방법과 특징들에 대해서 정리를 해보도록 하겠습니다. 생성자 주입 이름과 동일하게 생성자를 통해서 의존관계를 주입합니다. 여기 서점을 관리하는 애플리케이션이 있다고 가정을 하고 소스를 살펴보도록 하겠습니다. Service의 소스를 보도록 하겠습니다. BookServiceImpl 은 Bo.. 2022. 2. 14.
[Chaos Engineering] CM4SB 적용 내용 정리 Chaos Monkey for Spring Boot를 이용하여 사용하는 애플리케이션에 어떻게 적용하는지를 알아보도록 하겠습니다. 아래 소스는 모두 Github에사 확인할 수 있습니다. - 소스 설정 Spring Boot를 사용하고 있다면 쉽게 추가할 수 있습니다. 개발 환경 IDE : Intelij 2021.2.2 JDK : 1.8 Spring Boot : 2.5.8 Gradle 기존 사용하는 프로젝트안에 아래 2개의 라이브러리를 추가해주면 됩니다. dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'de.codecentric:chaos-monkey-spring-boo.. 2022. 2. 13.
[Chaos Engineering] 개념 정리 최근에 회사에서 개발중인 시스템에서 아래와 같은 테스트 상황을 개발하게 되었습니다. 내용은 다음과 같습니다. 특정 사용자가 접속하여서 API를 호출하면 응답 지연을 할 수 있어야 한다. 해당 내용을 듣자 바로 AOP가 생각나서 그렇게 개발을 하였습니다. 그러다 Chaos Engineering이라는 내용을 알게 되었습니다. 그래서 기록하기 위해서 정리를 하게 되었습니다. Chaos Engineering 운영 환경에서도 갑작스러운 장애를 견딜 수 있는 시스템을 구축하기 위해 시스템을 실험하는 분야입니다. 시스템의 약점 서비스가 이용 불가능할때의 부적절한 대응 잘못 설정된 타임아웃 값으로 인한 지나친 재시도 뒷단의 시스템이 대규모 트래픽을 견디지 못해 발생한 장애 한 지점의 장애로 인해 연달아 발생하는 장애 .. 2022. 2. 13.
반응형