- 방문자수
전체 방문자
오늘 방문자
어제 방문자
인기 길
-
배달의민족 API Gateway
영상자료https://youtu.be/Ci_DsTkzcRY?si=sq061iV1GXtPEYxU다른 회사에서는 API gateway를 어떻게 쓰고 있는지 궁금해서 관련 영상을 찾아보다가 발견하게 되었다. API gateway를 개발 및 운영하는데 많은 도움이 될 거 같아 내용을 정리하게 되었다. 목차 API gateway란왜 API gateway가 필요할까배민의 API gateway API gateway란큰 범주에서 두 가지를 지원라우팅 - 클라이언트의 요청을 적절한 서비스로 전달 횡단 관심사 - 여러 서비스에서 공통으로 처리되어야 하는 문제를 중앙에서 일관되게 처리 인증, 보안, 모니터링, 탄력성 왜 API gateway가 필요할까모놀리식 -> 마이크로 서비스 변경되며 발생하는 문제점이 근본적인 원인으로..
-
[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..
-
[DOCKER] Docker restart 옵션
linux 서버에 docker를 설치하고 실행하면 docker daemon을 stop 하거나 종료할 일이 거의 없지만 만약, local PC에서 docker desktop을 사용한다면 pc를 재부팅할 때마다 docker daemon을 종료할 경우도 생긴다. 이러한 경우 다시 docker daemon을 재시작하는 경우 내부에 docker container의 start 관련 동작을 설정할 수 있다. restart option docker run -d --restart {option} redis no Don't automatically restart the container (default) on-failure[:max-retries] container가 정상적으로 종료되지 않은 경우(exit code가 0이..
-
[NGINX] client ip설정 (proxy_set_header, remote_addr, http_x_forwarded_for, proxy_add_x_forwarded_for)
location 하위 블록에 proxy_set_header를 통해서X-Forwarded-For, X-Real_IP와 같은 header를 세팅한다. 그러면 Tomcat과 같은 WAS Layer에서 해당 설정을 읽어서 IP 정보를 사용하게 된다. user nginx; worker_processes 2; ...http { include mime.types; upstream back-server { server 127.0.0.1:3000; keepalive 32; } ... server { ... location / { proxy_pass http://back-se..
-
[Git] 로컬, 원격 브랜치 삭제하기 (delete branch) (local, remote)
git을 통해서 버전을 관리하는 경우 새로운 기능을 추가할 때나, 버그를 수정할 때 feature 별로 브랜치를 따로 따서 작업을 하게 됩니다. 수정이 완료되고, 테스트를 통해 검증을 완료하면 master 브랜치에 머지를 진행하게 됩니다. 머지가 된 이후에는 feature 작업 브랜치를 삭제하게 되는데 해당 작업을 진행하는 방법을 정리해 보도록 하겠습니다. 브랜치 리스트 확인 git branch : local branch 확인 git branch -r : remote branch 확인 브랜치 삭제 git branch -d : local branch 삭제 ex) git branch -d feature/web/add-new-item git push -d : remote branch 삭제 ex) git pus..
최신 글
-
[네티인액션] 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..