분류 전체보기 371

[Spring] Spring Cloud Gateway (+ Eureka Server)

오늘은 MSA에서 빠질 수 없는 개념인 API Gateway의 역할을 수행하는 Spring Cloud Gateway에 대해 포스팅하려고 합니다. 더불어 Microservice의 IP, Port 정보들을 저장 및 관리해 주는 Eureka Server도 함께 알아보도록 하겠습니다. Spring Cloud Gateway에 대해 알아보기 전, API Gateway가 무엇인지 설명드리겠습니다. API Gateway비즈니스 로직이 아닌 기타 관심사들을 처리하는 역할분산 시스템 또는 마이크로서비스 아키텍처에서 매우 중요한 역할을 하는 컴포넌트입니다.클라이언트와 백엔드 서비스 사이에 위치하는 리버스 프록시 역할을 하는 서비스입니다. 클라이언트 요청을 여러 마이크로서비스로 분배하고, 이를 중앙에서 관리하는 단일 진입점입..

Java/Spring 2024.10.26

[Spring] Spring Webflux

오늘은 비동기 기반의 반응형 프로그래밍을 위한 Framework인 Webflux에 대해 알아보려고 합니다. Webflux를 사용하기 위해서는 Reactive Stream, Mono, Flux, r2dbc 등 다양한 개념을 인지하고 있어야 하는데, 이러한 개념들을 대략적으로 정리해 보도록 하겠습니다.   WebFlux에 근간이 되는 Reactive Programming 방식에 대해서 설명드린 후, WebFlux에 대해 알아보도록 하겠습니다. Reactive Programming (반응형 프로그래밍)데이터의 흐름과 변경사항의 전파에 중점을 둔 선언적 프로그래밍 패러다임패더라임: 어떤 한 시대의 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계, 또는 사물에 대한 이론적인 틀이나 체계를..

Java/Spring 2024.10.23

[Architecture] MSA (vs MA)

오늘은 애플리케이션을 구성하는 방법론인 MSA와 MA에 대해 알아보고, 각각의 특징과 장단점에 대해서 설명드리겠습니다. 대략적인 Architecture image입니다. 사진만 봐도 Monolitic은 한 곳에 뭉쳐져 있고, MSA는 각각 Microservice로 분산되어 있는 것을 육안으로 확인할 수 있습니다.MSA (Microservice Architecture)소프트웨어 시스템을 여러 작은 독립적인 서비스로 분할하여 개발하고 배포하는 방식SOA (Service Oriented Architecture)의 특징을 공통으로 가집니다SOA: 대규모 컴퓨터 시스템을 구축할 때의 개념으로 업무상 일 처리에 해당 소프트웨어 기능을 서비스로 판단하고 그 서비스를 네트워크상에 연동하여 시스템 전체를 구축해 가는 방..

CS 2024.10.22

[RocketDock] RocketDock을 이용하여 Mac 처럼 작업 표시줄 꾸미기

오늘은 Window 11에서 Mac처럼 꾸미는 방법에 대해서 소개해보려고 합니다.윈도우의 작업 표시줄이 이쁘지 않아 바꾸고 싶었는데, 생각보다 자료가 많아 쉽게 바꿀 수 있었습니다. 우선 RocketDock이라는 앱을 해당 PC에 download 해줍니다.  유료로 5달러 지불하라는 문구가 나오는데, 무시하고 다운로드 해주시면 됩니다.   이후, windows 시작시에 자동으로 실행될 수 있도록 설정해 줍니다.  이제 사용할 프로그램들을 RocketDock에 추가해줘야 합니다. 해당 표시줄에 마우스 우클릭 -> 아이템 추가RocketDock에서 사용할 프로그램의 "경로를 추가"바탕화면에 있는 프로그램을 드래그해서 넣을 경우 인식이 안되는 경우가 있습니다. 이를 방지하기 위해 프로그램의 경로를 넣어서 추가..

기타 2024.10.16

[Spring] org.springframework.orm.jpa.JpaSystemException: Error attempting to apply AttributeConverter

오늘은 에러 로그 관련해서 포스팅을 진행하려고 합니다. 개발 도중에 발생한 Error log인데, Error log를 먼저 보여드리고 분석한 내용에 대해 설명드리겠습니다. Error logorg.springframework.orm.jpa.JpaSystemException: Error attempting to apply AttributeConverter; nested exception is javax.persistence.PersistenceException: Error attempting to apply AttributeConverter at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(E..

Java/Spring 2024.09.26

[Spring] @Transactional isolation level, propagation level, timeout

오늘은 @Transactional annotation의 isolation level, propagation level, timeout에 대해 설명드리도록 하겠습니다.  먼저 @Transactional annotation이 무엇인지에 대해 알아본 후에, 핵심적인 내용들을 설명드리겠습니다.  @Transacational@Transactional은 DB 작업에서 Transaction을 관리하는 데 사용되는 annotationTransaction: 단일 작업 단위로 실행되는 하나 이상의 데이터베이스 작업 시퀀스, 더 이상 쪼갤 수 없는 최소 작업 단위Transcation은 commit으로 성공하거나 rollback으로 작업을 취소하고 이전 상태로 복원해야 합니다.commit: Transaction이 끝나는 시점..

Java/Spring 2024.09.23

[Spring] Spring Security 동작 원리 파악 (id, pw 기반의 basic auth 방식)

Spring Framwork 기반 Application에서 Spring Security를 적용하여 로그인 기능을 구현하곤 합니다. 기능 구현 방식에 있어, 전통적인 방식인 id, pw 기반의 세션 인증 방식이 있습니다. 오늘은 이 방식에 대해 상세히 정리해 보도록 하겠습니다. 이 포스팅은 Jwt, OAuth 기반의 인증에 대한 내용과는 별개의 내용이므로 참고 부탁드립니다. 우선 Spring Security의 개념과 관련 용어들에 대해 간단히 설명드리도록 하겠습니다. Spring Security Spring Security는 스프링 기반 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크입니다.보안과 관련해서 체계적으로 많은 옵션들을 제공해 주기 때문에 개발자의 입장에서는 보안 관련 로직을 직접 작성하지..

Java/Spring 2024.09.06

[Spring] org.hibernate.AssertionFailure: null id in entry (don't flush the Session after an exception occurs)

(conn=65) Duplicate entry '13-11.1.1.81' for key 'device_id_ip_UNIQUE'org.hibernate.AssertionFailure: null id in com.piolink.cc.app.ndm.domain.Host entry (don't flush the Session after an exception occurs) 해당 에러가 어떠한 에러인지 간략하게 설명드리겠습니다. try ~ catch 문에서 save 과정을 거칠 때, unique key 제약 조건을 위반하여 첫 번째로 Hibernate Exception인 DataIntegrityViolationException이 발생하게 됩니다.  이후 JPA Save가 실패하면서 세션이 초기화되어야 하지만, H..

Java/Spring 2024.09.04

[세이코 시계 리뷰] 세르띠에 SWR049 시계 리뷰

오늘은 세이코계의 까르띠에라고 불리는 세이코 시계를 리뷰하려고 합니다. 모델명은 SWR049고, 처음 디자인 보자마자 그냥 구매해야겠다는 욕구가 강하게 들어 구매하였습니다. 가격은 17만 원 정도 했습니다. (해외 배송비 포함) 해외 배송이라 일주일 정도 걸렸지만, 기다린 시간이 아깝지 않고 디자인이 정말 이쁘네요. 가격 대비 정말 잘 뽑힌 디자인이라고 생각했습니다. 박스 포장도 되게 예쁘게 잘 되어있네요. (물론 시계만 빼고 다 버리긴 했습니다.)  이 시계의 특이점은 다른 시계들과는 다르게 초침이 없다는 점입니다. 눈으로 볼때는 불편할 수 있지만, 저는 거슬리지 않고 오히려 깔끔하다는 느낌을 받았습니다. 사실 이런 거 관계없이 디자인이 예뻐서 바로 구매하긴 했습니다.    벗겨서 봤을 때는 더욱 이뻤..

일상/리뷰 2024.08.29

[Git] Git log 옵션 정리

Git logcommit에 관한 히스토리를 조회하는 명령어 Git log의 주요 옵션-p: 각 커밋에 적용된 패치를 보여줍니다--stat: 각 커밋에서 수용된 파일의 통계정보를 보여줍니다--shortstat: --stat의 결과 중에서 수정한 파일, 추가된 라인, 삭제된 라인만 보여줍니다--name-only: 커밋 정보 중에서 수정된 파일의 목록만 보여줍니다--name-status: 수정된 파일의 목록을 보여줄 뿐만 아니라 파일을 추가한 것인지, 수정한 것인지, 삭제한 것인지도 보여줍니다--graph: 브랜치와 머지 히스토리 정보까지 그래프로 보여줍니다--pretty: 지정한 형식으로 보여줍니다ex) git log --pretty=format: "%h, %an " --name-only --no-merge..

DevOps/Git 2024.08.22