본문 바로가기

전체 글

(46)
[Spring] UnknownNamedQueryException 빌드를 하던중 다음과 같은 로그를 마주했는데요. 2024-01-03 14:43:12 [main] DEBUG o.s.d.j.repository.query.NamedQuery - Did not find named query ServiceType.findByNameEquals 2024-01-03 14:43:12 [main] DEBUG o.s.o.j.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler - Creating new EntityManager for shared EntityManager invocation 2024-01-03 14:43:12 [main] DEBUG o.s.d.j.repository.query.NamedQuery - Looki..
[Spring] Annotation Processor mapstruct processor 를 implementation 을 통해 의존성을 부여하였을 때 다음과 같은 예외가 발생하였습니다.  우선 문서에 나와있는대로 annotationProcessor 를 통해 의존성을 받아오니 정상동작은 하였지만 두 방식의 차이에 대해 알고있어야겠다는 생각이 듭니다.Annotation Processor 정의Annotation Processor 란 컴파일 시 끼어들어 특정 annotation 이 붙어있는 소스코드를 참조하여 추가적인 소스코드를 삽입하는 코드입니다.Annotation Processor 특징컴파일 단계에서 모든 동작을 수행하고, 런타임에는 사용만 하는 것이기 때문에 런타임시 추가적인 리소스가 들지않습니다. 따라서 런타임 예외도 발생시키지 않습니다.다만 프로젝트의 ..
[DataBase] Query 비교 및 개념 SubQuery 와 Join SubQuery 가 일으킬 수 있는 문제들 SubQuery는 테이블과 같은 형태의 결과값을 만들어내지만, 실제 데이터는 저장하지않기때문에 성능저하를 야기할 수 있습니다. → SubQuery 를 접근할 때마다 Select 가 실행 SubQuery로 만들어지는 데이터는 테이블과 다르게 데이터를 설명하는 메타 정보를 가지고 있지않습니다. → 옵티마이저가 최적화를 하지 못함 SubQuery 를 꼭 사용해야한다면? MySQL 5.6 이상의 버전은 서브 쿼리가 최적화를 진행하는 조건이 생겼습니다. 그럼에도 위와같은 문제 때문에 비교적 Join 을 사용하는것이 더 좋긴합니다. 하지만 SubQuery 를 꼭 사용해야하는 상황이 있을 수 있기에 최적화가 되는 조건에 대해 알아보겠습니다. IN..
[DataBase] DBCP DBCP 커넥션 풀이란 일정량의 Connection 객체들을 미리 만들어서 pool 에 저장했다가, 클라이언트 요청이 오면 Connection 을 빌려주고, 해당 객체의 임무가 완료되면 다시 반납해서 pool에 저장하는 기법입니다. Hikari CP 동작원리 Connection 요청 이전에 사용했던 Connection 정보가 존재하는지 확인합니다. 이전 사용했던 Connection 목록 중 사용 가능한 Connection 이 있는지 확인 전체 Connection 목록 중 사용 가능한 존재 여부 확인 Connection 반환 만일 사용가능한 Connection 이 없다면 HandOffQueue 를 Polling 하면서 Thread 가 반납할 때까지 기다립니다. (지정한 TimeOut 시간까지 대기하다가 시..
[Network] IPSec VPN 해당 내용은 실제로 NCP, AWS - VPN 연동을 하며 알아야하는 기초지식과 실제 사례를 작성한 글입니다. IPSec 이란IPSec 은 장치간 암호화된 연결을 구성하는데 사용되는 프로토콜 세트입니다.주로 공용네트워크를 통해 전송되는 데이터를 안전하게 보호하는데 도움이 됩니다. (네트워크 계층) IPSec 프로토콜은 표준화된 3계층 터널링 프로토콜로 종종 VPN 을 구성하는 데 사용됩니다.IP 패킷을 암호화하고 해당 데이터의 출처를 인증하는 방식으로 작동합니다. IPSec 의 터널 동작모드Transport Mode : IP Packet에서 Payload 만 보호Turnel Mode : IP Packet 전체를 보호  IPSec 의 구성인증 헤더(AH) :AH 프로토콜은 변조를 방지하는 프로토콜로 해당 ..
[Infra] MSA 개념편 왜 MSA 를 사용해야할까? 다양한 이유가 있을테지만, 그 이유는 차근차근 공부해나가면서 알아보기로하고 이론적으로 바로 느껴지는 이유들을 나열해보자. 모노리스한 서버라면 특정 부분을 조금만 수정해도 다른부분에 영향이 가는것이 있는지 알아봐야한다. 특정부분에서만 리소스가 필요한데, 어쩔 수 없이 다른 기능들도 스케일 업, 스케일 아웃을 해야한다. 특정 서비스만 패치가되어 배포를 해야하는데 다른 모든 서비스들도 배포가 되어야한다. 위에서 말한 내용은 비용적인 면에서도 개발적인 면에서도 둘다 효율적이지 못합니다. MSA의 정의 어플리케이션이 여러개의 서비스조각으로 구성된 서비스를 의미합니다. 여기서 말하는 서비스는 각각 독립적인 서비스를 제공합니다. 서비스가 사용하는 저장소는 다른 서비스와 완벽히 격리됩니다...
[Spring] WebSocket WebSocketWebSocket(RFC 6455)은 TCP 연결을 통해 클라이언트와 서버간의 양방향통신을 사용할 수 있게 해줍니다. 일반적인 Http 프로토콜과는 다른 프로토콜이지만 80, 443 을 사용하고, Http와 호환되게 설계하여 기존 방화벽 규칙을 재사용할 수도 있습니다. HTTP 와의 차이점Http 통신은 애플리케이션이 다수의 URL로 모델링됩니다. 또한 클라이언트는 Req-Res 스타일로 해당 URL에 액세스합니다. 서버는 HTTP URL, 메서드, 헤더를 기반으로 라우팅합니다. 하지만 WebSocket 은 초기연결에 대한 URL이 1개만 존재합니다. 이후 모든 애플리케이션 메시지가 동일한 TCP 연결을 통해 전달됩니다. 이는 비동기식 이벤트 중심 메시지 아키텍쳐를 의미합니다. ** We..
[DataBase] DBMS 기본 용어 스토리지 엔진 스토리지 엔진은 예를들어 InnoDB, MyISAM, Memory 등이 존재합니다. 사용자가 요청한 SQL 문을 토대로 DB 에 저장된 디스크나 메모리에서 필요한 데이터를 가져옵니다. 이후 해당 데이터를 MySQL 엔진으로 보내줍니다. 일반적으로 온라인상의 트랜잭션 발생으로 데이터를 처리하는 OnlineTractionProcessing 환경이 대다수이므로 InnoDB 엔진을 사용합니다. MySQL 엔진 사용자가 요청한 SQL 문을 넘겨받은 뒤 SQL 검사를 하고 SQL 문을 최소단위로 분리하여 원하는 데이터를 빠르게 찾는 경로를 모색합니다. 이후 스토리지 엔진으로부터 전달받은 데이터 대상으로 불필요한 데이터를 제거하거나 가공하는 역할도 합니다. 파서 사용자가 요청한 SQL 문을 쪼개 최소단..