전체 글 54

[CS 지식] RDBMS와 NoSQL이란?

RDBMS와 NoSQL이란?RDMBS (Relational Database Management System):데이터를 행과 열로 구성된 엄격한 테이블 구조로 관리하며 테이블 간의 관계를 정의해 사용하는 관계형 데이터베이스(Ex.MySQL, PostgreSQL, Oracle)NoSQL (Not Only SQL):고정된 테이블 스키마가 없으며 Key-Value, Document, Graph 등 다양한 방식으로 자유롭게 데이터를 저장하는 비관계형 데이터베이스이다. (MongoDB, Redis, DynamoDB) 사용시기?RDBMS를 쓰는 경우:- 주문/결제/금융 시스템: 원자성(All or Nothing)이 보장되어 데이터 손실이나 왜곡이 절대로 없어야 할 때- 복잡한 관계 조회가 많은 서비스: 여러 테이블 ..

CS 지식 17:46:48

[CS 지식] Kafka란?

Kafka란?대규모 분산 시스템 환경에서 서비스 간 결합도를 낮추고 OS의 디스크 순차쓰기 방식을 활용해 대용량 트래픽 병목을 해결하는 핵심 데이터 파이프라인 아키텍처 쉽게 설명하면분산 이벤트 스트리밍 플랫폼: 대용량의 실시간 데이터(이벤트)를 안전하게 수집, 저장, 처리하기 위해 사용하는 분산 메시지 큐 시스템 사용시기?1. 대용량 이벤트/로그 수집유저 행동 데이터(클릭 스트림), 서버 접속 로그 결제 내역 등 수많은 서비스에서 발생하는 데이터를 중앙에서 수집할 때 사용한다.2. 마이크로서비스(MSA)간 비동기 통신:서비스 A가 작업 완료 후 Kafka에 이벤트를 발행하면 연결된 다른 서비스들이 각자의 처리 속도에 맞춰 이벤트를 소비하는 비동기 구조를 만든다.3. 실시간 데이터 파이프라인:발생한 데..

CS 지식 2026.09.07

[CS 지식] Redis란?

Redis란?데이터를 하드디스크(HDD/SSD)가 아닌 메인 메모리(RAM)에 저장하여 처리하는 초고속 인메모리 데이터 저장소이다.사용시기?1. 캐시 서버DB의 조회 결과나 자주 사용하는 데이터를 Redis에 임시 저장하여 DB 부하를 줄이고 응답 속도를 높일 때 사용한다.2. 분산 세션 관리로드 밸런서 환경에서 여러 서버가 클라이언트의 로그인 세션 정보를 공통으로 공유 할 때 활용한다.3. 실시간 순위표Sorted Set 자료구조를 활용하여 실시간 게임 점수나 검색어 순위를 손쉽게 집계할 때 사용한다. Redis 캐싱 전략 및 작동 방식전략동작 방식장점단점Look Aside (Cache Asid)앱이 먼저 Redis를 확인하고 데이터가 없으면 DB에서 조회해 Redis에 저장 후 반환함실제로 요청된 데..

CS 지식 2026.09.04

[CS 지식] 로드 밸런싱(Load Balancing)이란?

로드 밸런싱이란? 여러 대의 서버에 트래픽을 균등하게 두어 서버가 과부하로 터지지 않게 방지하여 시스템 안정성을 높이는 기술이다.사용 시기?1. 서버 성능 한계사용자가 많아 요청이 늘어나게 되면 단일 서버로는 급증하는 트래픽을 감당하기 힘들다.이때 서버를 추가하여 트래픽을 분산시켜줘야한다.2. 고가용성 확보사용하고 있는 서버1이 있다고 가정하자. 만약 운영중인 서버1이 장애로 인해 다운 된다면 서비스는 바로 중단된다.이것을 방지하게 위해서 추가적인 서버를 구축하여 서버1이 다운되도 서비스가 중단 없이 운영될 수 있어야 할 때 필요하다. (무중단 서비스)3. 효율적인 리소스 관리간단하게 여러 대의 서버를 운영하며 부하를 균등하게 나누고 싶을 때도 사용한다 로드 밸런싱의 알고리즘 작동 방식로드 밸런서는 들어..

CS 지식 2026.09.04

Spring Boot로 하나의 기능 만들어보기 - Controller

controller 코드는 HTTP 요청 제일 먼저 받는 계층. URL 경로 + HTTP 메서드(GET/POST 등)를 실제 Java 메서드에 연결(라우팅)해주는 역할을 가진다. 간단히 말하면 프론트에서 요청을 받고 service코드로 전달해서 작업을 수행하게 하는 코드.package com.mog.project.domain.room.controller;import com.mog.project.domain.room.dto.response.RoomStatusResponse;import com.mog.project.domain.room.service.RoomService;import com.mog.project.global.common.response.ApiResponse;import io.swagger...

Spring Boot 2026.07.02

Spring Boot로 하나의 기능 만들어보기 - Service

service 코드는 비즈니스 로직을 작성하는 코드이다.DB에서 필요한 모든 재료들을 다 모아서 DTO로 조립하는 역할을 한다. package com.mog.project.domain.room.service;// 필요한 재료들 Repository, 합쳐서 내보낼 그릇 Responseimport com.mog.project.domain.room.dto.response.RoomStatusResponse;import com.mog.project.domain.room.repository.RoomMemberRepository;import com.mog.project.domain.meeting.repository.MeetingRecordRepository;import com.mog.project.global.e..

Spring Boot 2026.07.02

Spring Boot로 하나의 기능 만들어보기 - DTO

DTO란?계층 간 데이터 주고받을 때 쓰는 순수 데이터 그릇. DB나 비즈니스 로직이랑 무관, 오직 "어떤 데이터를 어떤 모양으로 전달하냐"만 담당한다. Request, Response 2개 폴더를 만들어서 각각 구분해서 만드는데 Request는 프론트에서 벡엔드로 전달 할 때 우리가 받는 데이터 그릇이고 Response는 우리가 프론트한테 반환해줄 때의 데이터 그릇이다. 우리가 만드는 기능은 방 상태 조회 및 멤버 조회, 즉 프론트가 요청하면 반환만 해주면 되기에 Response만 만들면 된다. package com.mog.project.domain.room.dto.response;import com.mog.project.domain.room.entity.RoomStatus; import java.ut..

Spring Boot 2026.07.02

Spring Boot로 하나의 기능 만들어보기 - repository

repository 코드는 우리가 테이블에서 필요한 정보들을 뽑아주는 함수를 만들어놓는 코드이다. package com.mog.project.domain.room.repository;import com.mog.project.domain.room.entity.RoomMember; // 이 리포지토리가 다룰 엔티티 타입 가져옴 import java.util.List; // 단건 조회면 Optional, 우리는 방 여러개 반환이니 List// Spring Data JPA가 제공하는 기본 인터페이스// 이거 상속하면 CRUD 메서드 자동으로 생김 — 구현체를 우리가 안짜도 Spring이 런타임에 프록시 객체 만들어서 넣어줌.import org.springframework.data.jpa.repository.J..

Spring Boot 2026.07.02

Spring Boot로 하나의 기능 만들어보기 - Entity

Spring Boot에선 JPA(Persistence API)라는 표준 기술을 제공한다. 정의는 ' 자바 진영에서 객체와 관계형 데이터베이스(RDB)를 매핑하여 데이터를 관리하는 ORM(Object-Relational Mapping) 표준 기술'이지만 쉽게 말하면 SQL문을 직접 작성하지 않고객체 지향적인 코드만으로 데이터베이스의 CRUD 작업을 수행하도록 지원하는 것이다. 이 과정에서 DB 테이블을 Java 클래스로 매핑하는 코드를 Entity라고 부른다. 지금부터 작성하는 코드는 나의 프로젝트에 있는 하나의 기능인 생성된 방의 상태 조회 및 멤버 조회와 관련된코드이다.나도 공부하는 중이기에 코드를 한줄 한줄 뜯어보며 분석한다.package com.mog.project.domain.room.entit..

Spring Boot 2026.07.02