분류 전체보기 303

크롤링(Crawling)

🔍 1. 크롤링(Crawling)이란?웹 크롤링은 인터넷 상의 웹 페이지를 자동으로 탐색하고, 그 내용을 수집하는 기술 또는 과정! 보통 검색 엔진(예: 구글)이나 데이터 수집 봇이 사용하는 기술이다. 📌 크롤링의 기본 원리1️⃣ 크롤러(bot, spider)가 시작 URL(예: https://example.com)에 접속 2️⃣ 해당 페이지의 HTML 문서를 읽고, 내부에 있는 링크들을 수집 3️⃣ 수집한 링크를 따라가면서 다른 페이지도 탐색 4️⃣ 이 과정을 반복하면서 점점 더 많은 데이터를 수집 📌 크롤링을 사용하는 이유✅ 웹사이트의 정보를 자동으로 모으기 위해 ✅ 상품 가격, 뉴스 기사, 게시글 등을 수집해 분석하기 위해 ✅ 검색 엔진이 웹사이트를 인덱싱하기 위해 📌 크롤링 vs 스크래핑크..

python 2026.01.25

멀티 모듈 (Multi-module)이란?

msa 프로젝트 구성 중 각 시스템(서비스)에서 공통으로 필요로 하는 코드들이 많았다.이 중복을 줄이기 위해서 멀티 모듈로 관리하는 방법이 있다는 걸 알게되었다.결론적으로 내 프로젝트에는 멀티모듈 구조가 적합하지 않다고 판단해서 적용하지 않았지만, 멀티 모듈에 대해 알아본 것들을 정리했다! 🔍1. 멀티 모듈 (Multi-module)이란?멀티 모듈은 하나의 큰 프로젝트 내에서 여러 개의 모듈을 정의하는 방식.단일 애플리케이션에서 여러 모듈로 나누어 관리하는 방식MSA에서는 서비스 간의 의존성 관리나, 공통 라이브러리 등을 관리하기 위해 멀티 모듈을 사용할 수 있다.예시: common-utils라는 모듈을 만들고, 여러 서비스가 이 모듈을 의존성으로 추가하여 공통 기능(로그 처리, 유효성 검사, 예외 ..

Spring Boot DTO ↔ Entity 변환 방법

📌 왜 DTO ↔ Entity 변환이 필요한가?Entity는 DB 모델이고, DTO는 입출력·뷰 모델이기 때문.엔티티를 그대로 노출하면 보안·커플링·유효성 검증·API 스펙 분리 문제가 생기므로,DTO로 변환해서 외부와 내부를 분리하는 것이 Spring 실무 표준이다. 📌 객체 변환 3가지 방법 비교Spring Boot에서 DTO ↔ Entity 변환 시 대표적으로 아래 3가지를 비교할 수 있다. 📍 비교 기준컬렉션(List) 변환연관 관계 필드 변환 (예: User → Address 포함)타입 변환 (예: LocalDateTime → String)방법List 변환연관 관계 필드 변환타입 변환 (예: LocalDateTime → String)BeanUtils.copyProperties()❌ 수동 처..

Elasticsearch > analyzer

📌 1. settings / analysis / analyzer 개념🔍 1-1. settings란?인덱스의 구성 설정을 정의하는 영역이다.샤드 수, 리플리카 수, 분석기(analyzer) 설정 등이 포함된다.🔍 1-2. analysis란?텍스트 분석기 관련 설정 전부를 담는다.내부 구성:analyzertokenizerfilterchar_filter 🔍 1-3. analyzer란?텍스트를 쿼리 시 또는 색인 시 “어떻게 쪼개고(normalizing) 처리할지”를 정의하는 도구이다.최소 구성 요소:tokenizer (필수)filter (선택)char_filter (선택)📌 2. analyzer는 필수인가?analyzer를 반드시 설정해야 하는 것은 아니며, 기본 분석기만으로도 충분한 경우가 많다.항..

DB/데이터 관리 2026.01.25

DTO / VO / DAO / Entity / Model 비교

DTO / VO / DAO / Entity / Model은 모두 Spring에서 데이터와 관련된 객체들로, 각기 다른 역할을 한다. 헷갈리는 개념들을 한 번에 정리해보자! 😎📌🔥1. DTO / VO / DAO / Entity / Model 비교구분역할/목적특징사용하는 층(Layer)변경 가능성예시VO값 객체 (Value Object)불변 객체 (immutable)DTO, Entity와 연동 가능변경 XMoney, Point, AddressDTO데이터 전달 객체 (Data Transfer Object)계층 간 데이터 전달용Controller ↔ Service ↔ DAO변경 OUserDTO, LoginDTODAODB 접근 객체 (Data Access Object)DB 호출/쿼리 수행Repository ..

개인 식별 정보 암호화 방법

비밀번호를 암호화하는 것은 당연하지만 다른 개인 식별 정보에 대해서는 어떻게 보호해야할 지 깊이 생각해 본 적이 없는 것 같다!!개인정보 유출 시 피싱/사칭 등 범죄에 이용될 가능성이 있기 때문에 보호가 필요하다.주로 DB, 로그 등을 통해 외부로 유출 되거나 또는 내부자 위험도 있다. 암호화 해두면 유출되더라도 바로 식별 불가능하기 때문에 암호화가 필수다!! 📌 개인 식별 정보 보호 방법 정리개인 식별 정보는 검색이나 화면에 일부 노출이 필요한 경우도 있다!! 그렇기 때문에 복호화가 가능한 암호화를 이용해야한다.조회 성능을 위해 해시/마스킹/토큰화 방법을 같이 이용한다. 대상이메일휴대폰 번호주소사번 / 고객번호💫 비밀번호는 예외 처리 (검색 대상 아님)비밀번호는 조회·조건 검색이 필요하지 않으므로 ..

DB/데이터 관리 2026.01.25

ping · telnet · openssl · curl 비교

📌 ping · telnet · openssl · curl 비교👉 네트워크 장애 트러블슈팅, 어디서부터 봐야 할까?네트워크 문제는 하위 계층 → 상위 계층 순서로 확인해야 빠르게 원인을 좁힐 수 있다.ping, telnet, openssl, curl의 역할과 점검 순서를 정리했다!!📌 1. 명령어 비교명령어주요 목적사용 프로토콜OSI 계층보안ping호스트 생존 여부 확인ICMPNetwork (L3)❌telnetTCP 포트 연결 확인TCPApplication (L7)❌opensslSSL/TLS 연결 점검SSL/TLS over TCPApplication✅curl웹/API 요청 및 데이터 전송HTTP(S), FTP 등Application (L7)✅📌 2. 명령어별 역할과 특징✅ ping — 네트워크 생..

study/네트워크 2026.01.25

Redis란? (Spring 연동)

Redis 개념 → 설치 → 사용 → Spring 예제까지 한 번에 정리함.📌 1. Redis란?Redis (REmote DIctionary Server) 는 메모리(In-Memory)에 데이터를 저장하는 Key-Value 저장소다. 빠른 조회를 위한 캐시 + 만료되는 데이터 저장소이다. ✅ Redis의 핵심 특징메모리 기반 → 매우 빠름 (ms 단위)Key-Value 구조TTL(만료시간) 지원캐시 / 세션 / 토큰 / 임시 데이터 관리에 최적⚠️ 캐시는 DB처럼 쓰면 안 됨. 빠른 조회용 보조 저장소.트랜잭션 보장 ❌영속성 한계장애 시 데이터 유실 가능📖 예시KEY: product:123VALUE: { "name": "운동화", "price": 99000 } 📌 2. Redis는 언제 쓰는가?✔ ..

Streaming이란?

📌 1. Streaming이란?Streaming은 데이터를 한 번에 모두 보내는 게 아니라, 조각(chunk) 단위로 나눠서 순차적으로 전송하는 방식이다. 📖 예를 들어:대용량 파일 전송 시 전체를 다 들고 있지 않고 조금씩 읽고 보내는 방식채팅, 로그, 실시간 알림 등 계속 이어지는 데이터를 실시간으로 전달하고 싶을 때 사용나는 ai API 응답을 사용자에게 빨리 보여주기 위해 사용했다!!📌 2. Reactive Stream 기본 개념Reactive Stream은 비동기 + 논블로킹 방식으로 데이터 흐름(스트림)을 처리하는 기술이다.Java에서는 이를 Flux, Mono 같은 클래스로 표현하며, Spring WebFlux는 이를 기반으로 작동하는 비동기 웹 프레임워크다.📌 3. Mono vs F..

Backend/JAVA 2025.12.18