- 방문자수
전체 방문자
오늘 방문자
어제 방문자
인기 길
-
[JAVA] ClassLoader란, 원칙, 계층구조, 로딩단계
Java ClassLoader에 대한 설명으로 아래의 내용들에 대해 다루어 보도록 하겠습니다. ClassLoader 정의 ClassLoader 원칙 (특징) ClassLoader 계층 구조 ClassLoader 로딩 단계 ClassLoader 정의 ClassLoader는 JVM의 구성요소 중 하나로, '.class' 바이트 코드를 읽어 들여 class 객체를 생성하는 역할을 담당한다. 즉, 클래스가 요청될 때 class파일로부터 바이트 코드를 읽어 메모리로 로딩하는 역할 자바 클래스들은 한 번에 모든 클래스가 메모리에 올라가지 않는다. 각 클래스들은 필요할 때 애플리케이션에 올라가게 되며, 이 작업을 클래스로더가 해주게 된다. 예를 들어 간단한 Class의 main문을 실행할때, load 되는 class..
-
[Encrypt] 암호화 & 해시 (Encrypt & Hash )
기술 면접을 보며 나왔던 질문 중에 암호화 관련된 질문이 있어서 정리를 하게 되었습니다. 암호화, 해시의 개념 둘의 차이점 각각의 대표 알고리즘 예시 Encrypt (암호화) 양방향 암호화 기법 평문을 암호화된 문장으로 만들고, 복호화 기능을 가짐 대칭 암호화 DES(Data Encryption Standard) T-DES ( Triple Data Encryption Standard) AES (Advanced Encryption Standard) 비대칭 암호화 RSA Hash (해시) 임의의 길이 입력을 고정된 길이의 출력으로 바꾸어주고, 복호화가 되지 않아 원문을 알 수 없으나 같은 입력은 같은 출력을 보장 단방향 암호화 기법 MD5 (Message Digest) SHA (Secure Hash Algo..
-
[Nginx] mirror 기능 사용해보기
mirror(ngx_http_mirror_module)메인 요청을 그대로 복제하여 별도의 URL 또는 서버로 보내는 기능트래픽을 그대로 복제해서 로그, 분석, A/B 테스트, 백업 서버 등에 전달 메인 요청의 성능에 영향을 최소화하며, 응답은 무시됨항목내용동작 방식메인 요청과 동일한 서브요청(subrequest)을 백그라운드에서 실행응답 처리무시됨(클라이언트에게는 영향을 주지 않음)비동기 여부기본적으로 비동기적이지만, HTTP/1.1 keep-alive 환경에서는 간접적으로 다음 요청에 영향 가능활용 예트래픽 복제, 로깅, 미러링 테스트, A/B 테스팅 설정 예시 upstream backend_main { server 127.0.0.1:8080;}upstream backend_mirror { ..
-
[Server] CURL - 사용법 & 옵션
로컬에서 API를 간단하게 테스트하는 경우에 Postman, curl을 자주 사용하는데 curl에 다양한 옵션들을 한 번씩 사용해 보고 정리해 두자.curl(Client URL)터미널에서 URL을 통해 데이터를 전송하거나 받아올 수 있는 커맨드라인 도구-> SHELL(커맨드라인 환경)에서 REST API(http) 테스트를 위해서 curl 명령어를 이용 기본 호출 curl localhost:8080/actuator/health아무런 옵션 없이 타겟 url만 넣어서 호출하는 경우 적용되는 기본 옵션 정보 HTTP 메서드 -> GETHTTP 버전 -> HTTP/1.1 Content-Type 헤더 -> 없음 주요 옵션 주로 사용하는 옵션들을 정리해 보았다.필자 기준 많이 사용하는 옵션들이 상단에 존재한다. ..
-
[Server] netstat 명령어 - 네트워크 통계 정보
netstat이란 network statistics의 약자 네트워크 접속, 라우팅 테이블, 네트워크 인터페이스의 통계 정보를 보여주는 도구 netstat 옵션 -a : 현재 다른 PC와 연결(Established)되어 있거나 대기(Listening) 중인 상태 -l (listen) : 연결 가능한 상태 -t (tcp) : tcp -u (udp) : udp -p : 프로그램 이름 / PID -n (number port) : 포트 넘버 netstat field 정보 $ netstat -antplF Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN - - Pro..
최신 글
-
[네티인액션] 3장 네티 컴포넌트와 설계
1장에서는 자바 고성능 네트워크 프로그래밍의 역사와 기술적 사항2장에서는 논의의 폭을 애플리케이션 개발로 넓혔다. 간단한 클라이언트와 서버를 만드는 과정에서 부트스트랩, ChannelHandler를 직접 체험 이 내용을 바탕으로 클래스 라이브러리와 프레임워크라는 두 가지 다른 관점으로 네티를 살펴보자.넓게 보면, 네티는 기술과 아키텍처라고 광범위하게 이야기하는 두 관심 영역의 문제를 모두 해결한다.1. 자바 NIO 기반의 비동기식 이벤트 기반 구현을 이용해 고부하 조건에서도 애플리케이션 성능과 확장성을 최대한 보장2. 네티는 애플리케이션 논리를 네트워크 레이어로부터 분리하는 다양한 설계 패턴을 활용해 코드의 테스트 용이성, 모듈성, 재사용성을 극대화해 개발을 간소화 Channel, EventLoop,..
-
[네티인액션] 2장 첫 번째 네티 애플리케이션(1):클라이언트
클라이언트를 작성하려면 앞서 버서에서 작성한 두 주요 코드(비즈니스 논리와 부트스트랩)를 다시 작성해야 한다. ChannelHandler를 이용한 클라이언트 논리 구현 서버와 비슷하게 클라이언트에도 데이터를 처리할 ChannelInboundHandler가 있다. 이번 예제에서는 SimpleChannelInboundHandler클래스를 확장해 보자.channelActive() : 서버에 대한 연결이 만들어지면 호출channelRead0() : 서버로부터 메시지를 수신하면 호출exceptionCaught() : 처리 중에 예외가 발생하면 호출 @Sharablepublic class EchoClientHandler extends SimpleChannelInboundHandler { @Override ..
-
[네티인액션] 2장 첫 번째 네티 애플리케이션(1):서버
네티 클라이언트/서버 개요Echo 클라이언트와 서버 간의 상호작용을 간단하게 구현하여 기본적인 구조를 학습해 보자. Echo 서버모든 네티 서버의 필요 항목하나 이상의 ChannelHandler : 클라이언트로부터 받은 데이터를 서버 측에서 처리하는 비즈니스 논리를 구현부트스트랩 : 서버를 구성하는 시동 코드. 최소한 서버가 연결 요청을 수신하는 포트를 서버와 바인딩하는 코드 ChannelHandler와 비즈니스 논리 Echo 서버는 들어오는 메시지에 반응해야 하므로 인바운드 이벤트에 반응하는 메서드가 정의된 ChannelInboundHandler 인터페이스를 구현해야 한다. 이 애플리케이션은 소수의 메서드를 이용하는 간단한 애플리케이션이므로 ChannelInboundHandler의 기본 구현을 제공..
-
[Linux] 대규모 트래픽 대비 - 서버 설정
서버 이전 작업을 진행하는 경우 신규로 발급받은 서버에 linux 관련 설정을 새로 세팅해야 한다.이때 놓치지 않고 설정해야 하는 서버 설정들을 정리해 보자. 커널 설정net.ipv4.ip_forward = 1의미 / 동작: 서버가 들어온 패킷을 다른 네트워크로 전달하도록 허용. 커널이 라우터처럼 동작.왜 필요한가: Docker, Kubernetes, NAT, VPN 등에서 패킷 포워딩 필수. 컨테이너 간 통신, 포트포워딩 등이 정상 동작하려면 필요.net.ipv4.ip_local_port_range = 1024 65535의미 / 동작: outbound 연결 시 사용할 수 있는 임시 포트(ephemeral port) 범위를 지정.왜 필요한가: reverse proxy, API 서버, 대량 outbou..
-
[Redis] 선착순 이벤트 시스템 활용
제한된 쿠폰수를 선착순으로 제공하는 시스템이 필요할 때 어떻게 문제없이 이벤트를 진행해야 하는지에 대한 고민은 기존에 많이 이루어졌을 것이다.그중에 잘 정리된 자료가 있는 것으로 보여 해당 내용을 정리해 보자. https://youtu.be/MTSn93rNPPE?si=9prxYvuWHdU3pey9https://velog.io/@hgs-study/redis-sorted-set redis sorted set우선 부하가 몰리는 부분을 해결해야 한다.이를 위해 모든 부하를 한 번에 서비스에서 받지 않고 앞단에 버퍼 역할을 하는 redis를 둔다. 레디스의 자료구조 중에 sorted set을 사용하면 버퍼 역할을 하면서도 선착순으로 들어온 순서대로 정렬을 해주는 역할을 한다. (https://kkang-joo.t..