전체 글 57

[CS 지식] 실시간 통신을 하는 방법들

실시간 통신이란?클라이언트(브라우저, 앱)와 서버가 연결을 유지하거나 주기적으로 확인하여 데이터가 발생하는 즉시 지연 없이 주고받는 통신 방식을 의미.무슨 방법들이 있는가 ?기술설명WebSocket양방향 통신을 지원하는 대표적인 표준 프로토콜SSE(Server-Sent Events)서버에서 클라이언트로만 데이터를 실시간 푸시하는 단방향 기술HTTP Polling(Short / Long Polling)클라이언트가 서버에 주기적으로 데이터 유무를 물어보는 방식WebRTC(Web Real-Time Communication)서버를 거치지 않고 브라우저 간(P2P)에 직접 음성/영상/데이터를 주고받는 기술사용시기?1. 즉각적인 데이터 동기화가 필요할 때 (WebSocket, HTTP Polling)사용자 간 입력..

CS 지식 2026.09.16

[CS 지식] SSL/TLS 암호화란?

SSL/TLS 암호화란?SSL(Secure Sockets Layer)과 TSL(Transport Layer Security)는 인터넷 통신에서 데이터를 암호화하여 주고받기 위한 보안 프로토콜이다. 과거에 사용 되던 SSL의 보안 취약점을 보완하여 발전시킨 표준이 TLS이다.사용시기?1. HTTP 서비스를 안전한 HTTPS로 전환할 때- 웹 사이트와 사용자 간의 전체 통신 구간을 암호화해야 할 때 사용한다.2. 개인정보 및 민감 데이터를 송수신 할 때- 로그인, 회원가입, 신용카드 결제, 계좌 이체 등 보안이 필수적인 긴으을 수행할 때 사용한다.3. 서버의 신원을 증명해야 할 때접속하려는 사이트가 가짜 피싱 사이트가 아닌 검증된 진짜 서버인지 디지털 인증서를 통해 확인해야 할 때 사용한다.4. 웹 외의 통..

CS 지식 2026.09.15

[CS 지식] OSI 7계층이란?

OSI 7계층이란?국제표준화기구(ISO)에서 개발한 모델로 네크워크 통신이 일어나는 과정을 7개의 단계로 표준화하여 정의한 네크워크 참조 모델계층별로 역할이 상호 독립적으로 나뉘어 있어 문제 발생 시 해당 계층만 파악하여 유지보수하기 용이하다.(예: 응용, 표현, 세션, 전송, 네트워크, 데이터 링크, 물리 계층)사용시기?1. 상위 계층을 다룰 때- 사용자 친화적 애플리케이션 및 인터페이스 개발웹 브라우저, 이메일 프로그램 등 사용자와 직접 상호작용하는 스프트웨어를 개발 할 때 사용한다.- 데이터 인코딩 및 보안 적용암호화(SSL/TLS), 데이터 압축, 파일 형식(JSON, XML 등)의 변환 및 세션 관리 요구사항이 있을 때 다룬다. 2. 하위 계층을 다룰 때- 안정적인 시스템 네크워크 구축 및 데이..

CS 지식 2026.09.15

[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 지식 2026.09.09

[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