전체 글 273

OpenFeign: MSA 서비스 간 통신

📌MSA에서의 HTTP 클라이언트 사용MSA 환경에서는 각 서비스가 독립적으로 동작하며, 서로의 API를 호출해야 한다. 이때 다양한 HTTP 클라이언트를 사용할 수 있으며, 성능과 유지보수를 고려해 적절한 방식을 선택해야 한다. ✅ HTTP 클라이언트는 MSA에서만 사용할까?➡️ 아니다! 일반적인 모놀리식 아키텍처에서도 다른 외부 API 호출을 위해 HTTP 클라이언트를 사용한다.➡️ 하지만 MSA에서는 서비스 간 통신이 필수적이므로, OpenFeign 같은 라이브러리가 특히 많이 사용된다. ✅ 일반적인 API 호출과의 차이점은?➡️ 보통 API 호출은 단순한 HTTP 요청이지만, MSA에서는 더 세밀한 HTTP 클라이언트 설정이 필요하다.서비스 디스커버리(Eureka) 를 이용한 동적 URL 매핑로..

JPA vs MyBatis

JPA와 MyBatis는 Java 애플리케이션에서 데이터베이스와 통신하기 위한 대표적인 persistence 프레임워크로, 각각 자동화된 ORM 방식(JPA)과 SQL 중심의 매퍼 방식(MyBatis)을 제공한다. 🔥 JPA vs MyBatis 비교✔ JPA는 객체 중심 설계와 생산성 강화에 좋음✔ MyBatis는 SQL 최적화와 복잡한 쿼리에 강점✔ 대부분의 프로젝트는 JPA + QueryDSL을 기본으로 사용하면서, 성능이 중요한 부분만 MyBatis로 처리!비교 항목🏆 JPA (Hibernate, Spring Data JPA)🔥 MyBatis개발 생산성✅자동 매핑, CRUD 자동 생성 → 생산성 높음❌SQL 직접 작성 필요 → 생산성 낮음SQL 최적화❌복잡한 쿼리는 어렵고 성능 튜닝 필요 ✅S..

Backend/JAVA 2025.04.10

Keystore와 Truststore

📌 1. Keystore와 TruststoreSSL/TLS의 주요 구성 요소이며 ssl 인증서와 key 저장하는 저장소이다.*SSL 인증서서버의 신원을 증명하며, CA(Certificate Authority)에서 발급받는다.인증서에는 서버의 공개키, 도메인 이름, 만료 날짜 등이 포함된다.🔗Ssl 개념 & 인증서 발급 ✅1-1. Keystore인증서와 개인 키(Private Key)를 저장하는 저장소.서버나 클라이언트가 자신을 증명할 때 사용.역할:서버 측에서 클라이언트에게 자신의 신원을 증명하기 위해 사용.클라이언트 측에서 서버로 자신을 인증해야 하는 경우(예: 양방향 SSL).형식: 일반적으로 .jks, .p12, 또는 .pem. ✅1-2. Truststore신뢰할 수 있는 상대방의 공개 키 인증..

study/보안 2025.04.10

Elasticsearch란?

📌 1. Elasticsearch란?Elasticsearch는 분산 검색 및 분석 엔진으로, 대규모 데이터를 빠르게 검색하고 분석하는 데 최적화된 시스템!!검색, 로그 수집, 데이터 분석 등의 용도로 사용된다. ✅ 1-1. Elasticsearch의 주요 개념인덱스(Index)데이터를 검색하기 위해 구성된 기본적인 저장 단위. 각 인덱스는 문서(document)의 집합으로 구성, 이 문서들은 JSON 형식으로 저장된다.샤드(Shard)와 레플리카(Replica)Elasticsearch는 데이터를 샤드(shard)로 나누어 여러 서버에 분산 저장, 이를 레플리카(replica)로 복제하여 고가용성을 보장한다.검색 및 분석사용자는 검색 쿼리를 통해 데이터를 빠르게 찾고, 분석할 수 있다.  전체 텍스트 검..

DMZ란? (개념 및 구현 방법)

📌 DMZ와 내부 네트워크 구조 및 구현 방법DMZ의 개념과 내부 네트워크 구조 및 구현 방법에 대해 알아보자!! 😊  🔍1. DMZ(Demilitarized Zone, 비무장지대)란?✅1-1. 내부망/외부망 이란?🔹 내부 네트워크 (Internal Network)기업이나 조직 내부에서만 접근 가능한 네트워크사설 IP (Private IP)를 사용하여 외부에서는 직접 접근 불가내부망에는 데이터베이스(DB), 애플리케이션 서버(WAS) 등이 위치 🔹 외부 네트워크 (Internet)전 세계적으로 연결된 공용 네트워크공인 IP (Public IP)를 사용하여 누구나 접근 가능웹사이트, API 서버 등이 외부 네트워크에서 서비스됨 ✅1-2. DMS란?🔹 DMZ (Demilitarized Zone, ..

study/네트워크 2025.04.06

데이터 통합 조회 방법 설계

📌 문제MSA에서는 각 서비스가 독립적으로 DB를 관리하기 때문에, 한 서비스에서 다른 서비스의 데이터를 직접적으로 조회할 수 없다.예를 들어, 주문 목록을 조회할 때, 주문 아이템정보 제공을 위해 상품 정보를 JOIN으로 가져오지 못 하고 주문 아이템 마다 상품 서비스에 요청을 보내야 한다.이 과정에서 여러 번의 API 호출이 발생하기에 성능 저하 우려가 있었다. 📌 방법 비교✅ 1. 주문 아이템마다 상품 API 호출주문 1개 → 주문 아이템1개 마다 상품 서비스 API를 호출하여 상품 정보를 받아오고 이를 합친다.✔ 장점간단하고 직관적인 방식❌ 단점주문마다 상품 정보를 별도로 API 호출하기 때문에 네트워크 요청이 많아져 성능이 저하될 수 있음. ✅ 2. 캐시(redis)를 이용해 주문 정보 저장..

MSA 환경에서 인증/토큰 재요청

📌 문제JWT 토큰이 만료되었을 때 다시 요청을 처리하는 방법은 Refresh Token을 활용한 재발급 방식이 일반적이다.예를 들어, 게시글 작성 중 토큰이 만료 되었을 때는 사용자가 재로그인/수동 로그인 시간 연장 하지 않고 refresh 처리가 되어야 한다!!✅ 1. MSA 환경에서 JWT 인증 흐름1️⃣ 사용자 로그인 → 인증 서버(Auth Service)에서 JWT 액세스 토큰과 리프레시 토큰 발급액세스 토큰: 비교적 짧은 만료 시간 (예: 30분~1시간)리프레시 토큰: 비교적 긴 만료 시간 (예: 7일~30일)클라이언트는 액세스 토큰을 HTTP 헤더에 포함하여 API 요청2️⃣ 게이트웨이(API Gateway)에서 JWT 토큰 검증 후 해당 마이크로서비스(Post Service 등)로 요청 ..

JSP에서 JavaScript 모듈 사용하기

📌 JSP에서 JavaScript 모듈 사용하기JSP에서 JavaScript 모듈을 사용하려면 몇 가지 주의해야 할 점이 있다. 특히, 를 사용하면 된다.common.js 파일이 로드되며, 전역 스코프에서 사용 가능. 하지만 ES6 모듈을 사용하면 이렇게 로드할 수 없다. 📌 2. ES6 모듈(export / import) 사용 방법ES6 모듈을 사용하려면 ✔️ 모듈을 사용하면 import 키워드를 통해 특정 함수만 가져올 수 있다. ❌ 이클립스에서는 ✔️ JSP에서 없이도 ES6 모듈처럼 활용할 수 있다. ✔️ 이클립스에서도 코드 색상이 정상적으로 표시됐다.

Frontend/javaScript 2025.04.06

JavaScript 코드 실행 순서 & 실행 타이밍 제어

📌 JavaScript 코드 실행 순서 & 실행 타이밍 제어 방법JavaScript는 브라우저에서 HTML을 해석하면서 실행된다! 그런데 코드의 실행 순서를 잘못 이해하면 예상과 다르게 동작하거나 오류가 발생할 수도 있다. 😵그래서 JavaScript의 실행 순서와 실행 타이밍을 제어하는 방법을 정리해보았다.✅ 1. JavaScript 코드 실행 순서JavaScript는 HTML을 위에서 아래로 해석하면서 실행된다.   🔹 기본적인 실행 흐름1️⃣ HTML(DOM) 위에서 아래로 해석2️⃣  🔹 실행 결과1️⃣ head 내부 스크립트 실행2️⃣ body 내부 script 실행3️⃣ document ready 실행 (DOM 완성 후)4️⃣ window.onload 실행 (이미지..

Frontend/javaScript 2025.04.06

조회 속도 개선 (쿼리최적화)

🎯 문제쪽지함 기능 개발 후 쪽지 목록을 조회 할 때 데이터가 적을 땐 문제를 느끼지 못 했는데, 10만건 이상 데이터 삽입 후 테스트 했을 때 조회 속도가 느려졌다. 조회 속도를 개선해보자!! 😊전체 조회 개선, 검색 개선 -> 페이징 개선 으로 진행함.급하면 결론만 보기!!📌 화면 (보낸 쪽지 목록)✔ 페이지 진입 시 최신순으로 조회.✔ 검색(필터)조건에 따라 조회.✔ 페이지 이동 시 한 페이지 개수 설정만큼 가져옴. 📌 속도 측정 방법✅ 애플리케이션 개발자 도구 네트워크 응답을 측정조회 개수, 검색 조건을 설정할 수 있는데, 조회 개수 10개 고정하고 전체 조회와 수신자(받은 사람) 검색 시간을 측정했다.내가 보낸 쪽지 10만건 + 다른 쪽지 x내가 보낸 쪽지 20만건 + 다른 쪽지 10만건..

트러블슈팅 2025.04.06