본문 바로가기

Back-End5

CPU 부하, I/O 부하 파악 방법 이 글은 `대규모 서비스를 지탱하는 기술` 도서를 참고하여 작성되었습니다. 서론 서버 개발을 하다보면 시스템에 부하가 걸려서 느려지는 경우를 많이볼 수 있다. 이럴때는 원인이 무엇인지 파악하는게 중요하다. 개발중인 환경에서는 부하가 큰 문제가 되지 않는다. 하지만 그게 프로덕션 환경이라면 이야기는 달라진다. 시스템 부하는 곧 서버가 다운될수도 있다는 의미인데 그땐 서비스 중인 모든 API를 사용할 수 없게 된다. 시스템 부하상태가 발생했을때 원인 파악을 위하여 CPU에 의한 부하인지, I/O 에 의한 부하인지 파악을 하여 부하를 해결하는게 중요하다. 부하 Load Average(평균 부하)는 대기된 태스크 수의 정보가 나온다. 총 3개가 출력되는데 왼쪽부터 차례로 1분, 5분, 15분 동안 어느 정도의 .. 2022. 7. 10.
Neo4j 설치하고 사용해보기 Neo4j Graph Database Neo4j는 Neo4j 사가 개발한 그래프 데이터베이스 관리 시스템입니다. NoSQL의 일종인데, 사용해보면서 느낀점이 일반적인 NoSQL과는 좀 다르다는 점이 눈에 띄었습니다. RDB와 NoSQL 그 중간 어디쯤(?) 이라는 생각이 많이 들었는데요, RDB와 비교하여 여러가지 지원하는 패키지도 많고 DBMS에서 데이터 연산을 빠르게 제공하기 때문에 데이터 과학, 보안 위협 탐지 등의 분야에서 폭 넓게 쓰인다고 합니다. 오늘은 간단하게 Neo4j 를 이용해서 실습을 진행해 보겠습니다. Neo4j Docker 저는 Docker 를 이용해서 Neo4j 서버를 올리겠습니다. Docker를 이용하여 아래 커맨드로 Neo4j 이미지를 다운받고 서버를 실행해 보겠습니다. doc.. 2022. 1. 25.
Forward Proxy, Reverse Proxy의 정의와 차이점 Proxy 프록시 서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용프로그램 입니다. 이러한 프록시 서버는 크게 `Forward Proxy` 와 `Reverse Proxy`로 나뉩니다. Forward Proxy 클라이언트(사용자)가 인터넷에 직접 접근하는게 아니라 포워드 프록시 서버가 요청을 받고 인터넷에 연결하여 결과를 클라이언트에 전달 (forward) 해줍니다. 프록시 서버는 Cache 를 사용하여 자주 사용하는 데이터라면 요청을 보내지 않고 캐시에서 가져올 수 있기 때문에 성능 향상이 가능합니다. Reverse Proxy 클라리언트가 인터넷에 데이터를 요청하면 리버스 프록시가 이 요청을 받아 내부 서버에서 데이터를 받은 후 클라이언트.. 2022. 1. 2.
traceroute 명령의 동작원리 안녕하세요 :) 오늘은 맥 환경에서 자주쓰는 Traceroute 명령의 동작 원리를 알아보려고 합니다. Traceroute란? `Traceroute` 는 패킷이 사용자가 지정한 목적지 까지 도달하는 동안 거쳐가는 라우터의 IP를 확인할 수 있는 명령입니다. 사용자가 특정 목적지까지 가는 경로를 알기를 원한다면 traceroute는 아주 큰 도움이 되는 명령어입니다. Traceroute 사용 방법 먼저 사용방법은 아래와 같습니다. $ traceroute [탐색하고자 하는 경로] 만약 탐색하고자 하는 경로를 [www.google.com] 으로 한다면 아래와 같은 결과가 출력됩니다. Traceroute 동작 원리 Traceroute의 동작 원리는 `ICMP` 방식으로 이루어 집니다. 하지만 여기서 방화벽 등등.. 2022. 1. 2.
Web Server와 WAS의 차이점 Web Server와 WAS의 차이점을 설명하기 전에, Static Page, Dynamic Page의 차이점을 설명한다. Static Page Web Server는 파일 경로 이름을 받아 경로와 일치하는 File Contents를 반환한다. 항상 동일한 페이지를 반환한다. Ex) Image, html, css, javascript파일과 같이 컴퓨터에 저장되어 있는 파일들 Dynamic Page 인자의 내용에 맞게 동적인 contents를 반환한다. 즉, 웹 서버에 의해서 실행되는 프로그램을 통해서 만들어진 결과물 *Servlet: WAS위에서 돌아가는 Java Program 개발자는 Servlet에 doGet()을 구현한다. Web Server Web Server의 개념 소프트웨어와 하드웨어로 구분된다.. 2020. 9. 2.