전체 글 127

HTTP/ HTTPS , SSL 가속기

예전에 은행권 프로젝트를 진행하며 SSL 가속기를 접하게 되었는데, 당시에는 단순히 보안 장비라고만 생각했다. 이번 기회에 SSL 가속기의 역할과 필요성을 정리해보았다. HTTP와 HTTPS의 차이 HTTP는 평문 데이터를 전송하는 프로토콜이기 때문에, HTTP 로 중요한 정보를 주고받으면 제 3자에 의해 조회될 수 있다.이러한 문제를 해결하기 위해 HTTP 에 암호화가 추가된 프로토콜이 HTTPS 입니다.HTTPS 는 SSL 의 껍질을 덮어쓴 HTTP 라고 할 수 있습니다.SSL(Secure Socket Layer) 인터넷을 통해 전달되는 정보를 보호하기 위해 개발한 통신 규약클라이언트와 서버가 서로 데이터를 암호화해 통신할 수 있도록 돕는 보안계층TCP 4계층의 암호화 프로토콜HTTP 는 원래..

Network 2025.03.19

Spring Boot 애플리케이션 실시간 모니터링: Actuator, Prometheus, Grafana 활용법

서비스 운영에서 실시간 모니터링은 장애 대응의 핵심 요소다. 만약 모니터링 도구가 없다면, 장애 발생 시 원인 분석과 트러블슈팅이 어렵고 시간이 오래 걸릴 수 있다. 이 글에서는 가장 널리 사용되는 Prometheus + Grafana 조합을 활용하여 Spring Boot 애플리케이션을 효과적으로 모니터링하는 방법을 소개한다. 개인 프로젝트를 진행하면서 Spring Boot Actuator를 활용해 Prometheus로 메트릭을 수집하고, 이를 Grafana로 시각화해보았다. 이를 통해 운영 툴을 익히고 데이터 흐름을 파악하는 과정을 정리해보려 한다. 액추에이터:  메트릭을 수집할수 있는 API 엔드포인트 제공 prometheus : 매트릭 같은 시계열  데이터 스키마를 지원하는 데이터 베이스시계열 데이..

Spring 2025.03.19

Java 저울 백준 - 2437

https://www.acmicpc.net/problem/2437하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓을 수 있고, 다른 쪽에는 무게를 측정하려는 물건만 올려놓을 수 있다. 무게가 양의 정수인 N개의 저울추가 주어질 때, 이 추들을 사용하여 측정할 수 없는 양의 정수 무게 중 최솟값을 구하는 프로그램을 작성하시오.예를 들어, 무게가 각각 3, 1, 6, 2, 7, 30, 1인 7개의 저울추가 주어졌을 때, 이 추들로 측정할 수 없는 양의 정수 무게 중 최솟값은 21이다. 입력첫 째 줄에는 저울추의 개수를 나타내는 양의 정수 N이 주어진다. N은 1 이상 1..

알고리즘 2025.02.19

Spring Boot + Redis 적용기

현재 개인적으로 주식 관련 프로젝트를 진행 중인데, 여러 유저들이 동일한 종목의 정보를 조회할 때 발생하는 API 호출의 중복 문제를 해결하기 위해 Redis를 도입했습니다. 문제점여러 유저가 동일한 종목 정보를 조회하는 경우, 증권사 API를 여러 번 호출해야 하는 상황이 발생할 수 있습니다. 이는 불필요한 트래픽을 유발하고 성능 저하를 초래할 수 있습니다. 이를 해결하기 위해 디스크 기반의 DBMS 에 비해 훨씬 빠른 레디스를 도입해보았다.레디스는 인메모리에 모든 데이터를 저장하기 때문에 훨씬 빠르며 여러가지 자료구조를 지원하고  확장성을 고려하였을때도 여러 기능을 제공한다는 점에서 이점이 있다.동일한 종목 요청시 캐시된 데이터를 반환하도록 api 호출을 최적화해보고 최적화 전 후 성능을 비교해보자 ..

Spring 2025.02.19

L4 , L7 로드밸런서

L4 , L7 로드 밸런서의 정의와 특징에 대해 알아보자!  L4 로드 밸런서 정의 L4 로드 밸런서는 전송 계층 (Transprot Layer, Layer 4)에서 작동하는 로드밸런서로, 주로 TCP 및 UDP 프로토콜 기반으로 클라이언트와 서버 간의 트래픽을 분산시킵니다. L4 로드 밸런서는 클라이언트의 IP 주소와 포트,  서버의 IP 주소와 포트를 기반으로 로드밸런싱을 수행합니다. L7 로드 밸런서 정의L7 은 로드밸런서는 애플리케이션 계층 (Application Layer, Layer 7)에서 작동하는 로드 밸런서로, 주로 HTTP  및 HTTPS 프로토콜 기반으로 클라이언트와 서버 간의 트래픽을 분산시킵니다. L7 로드밸런서는 요청 내용 (URL, 헤더, 쿠키) 등을 기반으로 로드 밸런싱을 수..

Network 2025.02.12

네트워크 - 프로그램1

네트워크 프로그램 1 - 예제이제 본격적으로 자바 네트워크 프로그램을 작성해 보자.여기서는 TCP/IP로 개발할 예정이다. (UDP는 직접 사용할 일이 많지 않으므로 다루지 않겠다. 이번에 만들 프로그램은 아주 간단한 네트워크 클라이언트, 서버 프로그램이다.클라이언트가 "Hello"라는 문자를 서버에 전달하면 서버는 클라이언트의 요청에 " World!"라는 단어를 더해서 "Hello World!"라는 단어를 클라이언트에 응답한다클라이언트 서버: "Hello"클라이언트 서버: "Hello World!"package network.tcp.v1;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;imp..

JAVA 2025.01.29

자바 - IO 기본 (buffer)

데이터 통신을 다루다 보면 버퍼라는 개념이 나온다. 버퍼는 왜 쓰이는 것일까?버퍼에 목적에 대해 알아보자!핵심 요약버퍼는 데이터를 일시적으로 저장하는 메모리 영역데이터 처리 속도가 서로 다른 장치나 프로세스 간의 속도 차이를 조율하거나, 입출력 성능을 향상시키기 위해 사용되는 중간 저장소버퍼(Buffer)의 목적 (임시 저장소로서의 큐 구조)입출력 데이터를 일정량 모아 두었다가 처리함으로써 시스템 전체의 효율과 안정성을 높이는 장치입니다.I/O 호출 횟수 감소로 인한 속도 향상데이터를 버퍼에 모아 한 번에 디스크나 네트워크로 전달I/O 오버헤드 감소 → 병목 완화속도 차이 조정 (Speed Mismatch Absorption)빠른 주체(CPU 등)와 느린 주체(디스크/네트워크 등) 간 속도 불일치 해소빠..

JAVA 2025.01.28

자바 - IO 기본 (InputStream, OutputStream)

자바에서 데이터를 파일이나 네트워크 등을 통해 주고 받을 때 어떤식으로 통신하는지 알아보자  데이터의 통신 과정은 스트림으로 통신한다  자바가 가진 데이터를 hello.dat 라는  파일에 저장하려면 어떻게 해야할까?자바 프로세스가 가지고 있는 데이터를 밖으로 보내려면 출력 스트림을 사용하면 되고, 반대로 외부 데이터를 자바 프로세스 안으로 가져오려면 입력 스트림을 사용하면 된다. 참고로 스프트림을 단방향으로 흐른다. 스트림 시작 스트림 시작 - 예제1package io.start;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class StreamStartMain1_1 { ..

JAVA 2025.01.28

TCP/IP 네트워크 이해하기 (4) - TCP

4계층 프로토콜 전송 계층 (Transport layer) 은 송신자의 프로세스와 수신자의 프로세스를 연결하는 통신 서비스를 제공한다.전송 계층은 연결 지향 데이터 스트림 지원, 신뢰성, 흐름제어 , 그리고 다중화와 같은 편리한 서비스를 제공한다, 전송 프로토콜 중 가장 잘 알려진 것은 연결 지향 전송 방식을 사용하는 전송 제어 프로토콜(TCP) 이다.보다 단순한 전송에 사용되는 사용자 데이터그램 프로토콜(UDP) 도 있다. 포트 번호특정 프로세스와 특정 프로세스가 통신을 하기 위해 사용한다. 하나의 포트는 하나의 프로세스만 사용가능하다.하나의 프로세스가 여러개의 포트를 사용하는 것은 가능하다.포트 번호는 일반적으로 정해져 있지만 무조건 지켜야하는 것은 아니다. TCP 프로토콜 TCP 가 하는 일  전송..

Network 2025.01.27

TCP/IP 네트워크 이해하기 (4) - IPv4, ICMP

IPv4 프로토콜과 패킷의 전송 과정 이해하기 IPv4 프로토콜이란? IPv4는 네트워크 계층에서 사용되는 프로토콜로, 다른 네트워크의 특정 대상에게 데이터를 전송하는 역할을 한다.전송의 신뢰성은 보장하지 않으며, 신뢰성 보장은 전송 계층(TCP 등)에서 담당한다. IP 헤더는 IP 패킷의 앞부분에 위치하며 IP 주소를 비롯한 각종 제어 정보를 담고 있다. IPv4 헤더는 고정 부분 20 바이트와 가변 부분 0~40바이트로 구성되어 있다. 옵션을 지정하지 않았을 때는 최소 크기는 20바이트이다. 버전 : 버전(Version)은 IP의 버전을 나타내는 영역이다. IPv4이므로 4이다.헤더 길이 : 헤더 길이(Header Length)는 4바이트를 기본 단위로 헤더의 길이를 규정하는 영역이다. IPv4에서는..

Network 2025.01.27