본문 바로가기
반응형

전체 글318

SpringBoot Redis Cache 적용 - @Cacheable, @CacheEvict SpringBoot에서 Redis를 활용하여 Cache를 적용하는 방법을 알아본다. 보통 로컬 Cache를 적용할 때 Caffeine Cache 또는 Ehcache를 적용할 수 있는데 글로벌 Cache로 Redis도 쉽게 적용이 가능하다. 1. 의존성 설정redis 적용을 위해서 'spring-boot-starter-data-redis' 의존성을 추가해준다.implementation 'org.springframework.boot:spring-boot-starter-data-redis:3.1.0' 2. Config 설정application.yml 이나 application.properties 파일에 아래와 같이 redis 설정을 진행한다. 필자는 properties 파일 기준으로 작성을 했다. # redi.. 2024. 10. 14.
Invalid value type for attribute 'factoryBeanObjectType': java.lang.String 에러 해결 SpringBoot 프로젝트에 MyBatis 적용을 위해서 Gradle에 의존성을 주입하고 실행하니 아래와 같은 에러가 발생했다.Invalid value type for attribute 'factoryBeanObjectType': java.lang.String 확인해보니 SpringBoot 버전과 MyBatis 버전의 문제였다. 필자 같은 경우 SpringBoot는 3.3.4에, MyBatis는 아래와 같이 3.0.1 버전을 찾아서 적용했었다.implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.1'  이 버전을 3.0.3 버전으로 변경해주니 해결 되었다. implementation 'org.mybatis.spring.boot:.. 2024. 10. 9.
[감자 단수주대금] 한화에어로스페이스 인적분할 감자 단수주대금 올해 4월 한화에어로스페이스가 신설회사 한화인더스트리얼솔루션즈를 설립해서 인적분할을 한다는 얘기를 들었었다. 한화에어로스페이스 주식을 조금 가지고 있었는데 8월말~9월 26일 거래정지가 된다는 소식을 들었고, 별로 신경 안쓰고 있었는데 10월 4일 아래와 같은 알림이 왔다.  처음 경험을 해보는 거라 감자 단수주대금이 뭔지 궁금해져서 공부삼아 찾아봤더니 아래와 같은 의미였다. 회사를 분할 하면서 주식의 비율이 한화에어로스페이스(0.9002797) : 한화인더스트리얼솔루션즈(0.0997203)로 약 9:1로 결정이 되었다. 그리고 내가 가지고 있던 주식을 같은 비율(약 9:1)로 분할을 한 것이고, 이렇게 됐을 때 양쪽 모두 계산상 1주 미만의 주식이 생기게 된다. 이것을 단수주라고 부른다(10주 미단은 .. 2024. 10. 5.
[http client] IntelliJ .http로 간단히 API 테스트 하는 방법#2 이번에는 IntelliJ에서 API를 테스트하는 방법 중 Spring Controller 소스 기반으로 http client를 생성하는 방법과 IntelliJ Endpoint를 사용하여 http client를 생성하는 방법을 알아본다. 지난번 내용은 아래를 참조하자 [http client] IntelliJ .http로 간단히 API 테스트 하는 방법IntelliJ IDEA는 다양한 기능을 통해 개발자들이 HTTP 요청을 테스트하고 디버깅할 수 있도록 도와준다. 특히 REST API 개발에서 HTTP 요청을 빠르게 테스트하는 것이 중요한데, IntelliJ에서는 HTTP Client라happy-jjang-a.tistory.com Controller 소스 기반 HTTP Client 테스트아래와 같이 Con.. 2024. 9. 29.
[http client] IntelliJ .http로 간단히 API 테스트 하는 방법#1 IntelliJ IDEA는 다양한 기능을 통해 개발자들이 HTTP 요청을 테스트하고 디버깅할 수 있도록 도와준다. 특히 REST API 개발에서 HTTP 요청을 빠르게 테스트하는 것이 중요한데, IntelliJ에서는 HTTP Client라는 강력한 도구를 제공하는데, 사용하는 방법도 직관적이고 간단하다. IntelliJ에서 HTTP Client로 API 테스트 하는 방법에 대해서 알아본다. 1. HTTP Client 설정IntelliJ에는 내장된 HTTP Client가 있어, 별도의 플러그인 설치 없이도 HTTP 사용이 가능하다. HTTP Client는 .http 파일을 생성하여 사용한다. 만약에 없는 경우 IntelliJ 플러그인에서 http로 검색을 해서 설치한다.  2. 기본 요청 테스트먼저 .ht.. 2024. 9. 15.
[MSA] Saga 패턴 이해와 종류(8가지) MSA 보상트랜잭션에서 많이 얘기가 나오는 Saga패턴에 대해서 알아본다. Saga 패턴- 서비스에서 각 업데이트가 이벤트를 발행해 다음 차례의 이벤트를 트리거하는 일련의 로컬 트랜잭션- 만약 일련의 작업들 중 하나라도 실패하면 이전까지의 작업이 완료된 서비스들에게 보상이벤트를 소싱함으로써 분산 환경에서 일관성을 보장하는 패턴- Saga패턴은 통신방식([Sync]동기/[Async]비동기), 일관성 처리([Atomic] 원자적 일관성/[Eventual] 최종 일관성), WorkFlow 조정 방식([Choreography]코레오그래피/[Orchestration]오케스트레이션)에 따라 8가지가 있음 1. Epic Saga(에픽 사가)동기 통신 + 원자적 일관성 + 오케스트레이션(SAO)많은 사람들에게 익숙하고.. 2024. 9. 12.
[독서] 언스크립티드(부의 추월차선 완결판) - 엠제이 드마코 각본화된(세뇌된) 대중적인 노예의 삶을 살지 말고 각본에서 탈출하여 기업가적 정신을 가지고 시간적, 경제적, 육체적 자유를 찾고 진정한 자신의 삶을 찾아라.  각본화된 삶에서 탈출하기 위해 정신적으로 어떻게 생각을 바꿔야 하는지, 실행은 어떤식으로 어떻게 해야하는지 등에 대해서 설명을 해주고 있다. 실행적인 부분에서는 확실히 사업적인 관점에서 접근을 하고 있어서 실제 경험이 없으면 잘 안 와닿을 수도 있을 것 같다. 하지만 현실을 자각하고 비전을 다시 잡는 일은 사업가나 직장인 구분없이 동일할 것 같고, 실행관점에서도 직장을 다니면서도 자기가 맡은 일에 대해서 충분히 실행해 볼수 있는 것이라 생각한다. 어떤 일을 하던지 자기가 현재 하는 일을 잘 해내는 사람이 다른일도 잘 해낼 수 있기 때문일 것이다. .. 2024. 9. 10.
브라우저에서 화면 css 스타일 전체 제거 프론트 개발 시 성능 등의 이유로 css 스타일의 영향도를 파악하기 위해 브라우저에서 css 전체를 한번에 제거하고 실행해보고 싶을 때가 있다. 이때 쉽게 화면에서 css 스타일을 제거할 수 있는 방법을 알아본다. 크롬에서 개발자도구를 실행하고, Console 탭에서 아래 명령을 입력한다. document.head.parentNode.removeChild(document.head) 참고로 크롬 개발자도구에서 위 명령을 복사붙여넣기 하면 아래와 같이 Warning이 떠서 직접 타이핑을 해야 한다. 크롬 개발자도구에서 위 명령을 naver에 접속하고 실행한 결과는 다음과 같다. 2024. 9. 7.
[MSA] 분산된 서비스 간의 WorkFlow(워크플로) 관리 - 오케스트레이션과 코레오그래피 분산된 서비스 환경에서 도메인에 특정한 작업을 수행하고, 그와 관련된 부수적인 문제를 처리하기 위해 둘 이상의 분산된 서비스를 하나의 WorkFlow(워크플로)로 조합하는 방법을 알아본다. WorkFlow관리 방법에는 크게 오케스트레이션(Orchestration) 패턴과 코레오그래피(Choreography) 패턴이 있다. MSA에서 보상트랜잭션 관리를 위한 Saga에서 얘기하는 오케스트레이션, 코레오그래피 패턴과 동일하다. 1. 오케스트레이션(Orchestration) 패턴 오케스트레이터(중재자)를 활용해서 중앙에서 워크플로 상태, 선택적 로직, 에러 처리, 알림 등 워크플로를 관리하는 방법MSA에서는 워크플로당 오케스트레이터를 하나씩 두는 것이 일반적 임경계조건과 에러 조건 등이 복잡한 워크플로 모델링.. 2024. 9. 7.
[MSA] 분산 데이터 액세스 패턴(분산된 데이터에 어떻게 접근할 것인가) MSA에서 서비스를 분리하게 되면 기존 통합되어 있던 데이터도 함께 분리가 된다. 이렇게 분산된 서비스 환경에서 서비스가 자신이 소유하지 않는 데이터에 접근하는 방법들에 대해 알아본다. 1. 서비스 간 통신 패턴다른 서비스에 필요한 데이터를 요청하는 가장 일반적인 패턴(타 서비스 API 호출)단순하고 직관적이나, 서비스 간 동적 커플링이 발생 함장점단점 단순하고 직관적  네트워크, 데이터, 보안 Latency가 발생(성능 저하) 데이터 용량 문제가 없음 확장성/처리량 이슈(타 서비스와 함께 확장 필요)  결합도에 따른 내고장성/가용성 저하  서비스 간 계약이 필요(API명세 등) 2. 컬럼 스키마 복제 패턴필요한 컬럼을 분산된 서비스의 여러 테이블에 복제해서 다른 바운디드 컨텍스트에서 자급자족적으로 사용.. 2024. 9. 1.
반응형