들어가며 기사 데이터가 적을 때는 대부분의 쿼리가 빠르게 작동한다. 하지만 기사 수가 수십만 건 이상으로 증가하면, 검색과 목록 조회 같은 기본 기능도 점점 느려질 수 있다. 이번 글에서는 데이터 증가와 운영 환경을 고려하여 다음 항목을 개선했다. 기사 검색을 위한 trigram 인덱스 추가 최신 중요도 조회 쿼리 단순화 COUNT 결과 캐...
Redis를 도입한 이유 뉴스 모니터링 서비스의 통계 API는 기사 수, 언론사별 기사 수, 중요도별 기사 수와 같은 데이터를 제공한다. 이러한 통계 값은 요청할 때마다 크게 달라지지 않지만, 기존 구조에서는 사용자가 통계 페이지를 열 때마다 데이터베이스에서 집계
들어가며 FastAPI로 뉴스 모니터링 서비스를 개발하면서, 기능은 정상적으로 작동하지만 기사 수가 많아질수록 처리 속도가 느려질 수 있는 부분들을 발견했다. 이번 글에서는 다음 성능 문제를 개선한 과정을 정리한다. 기사 본문을 불필요하게 다시 크롤링하는 문제 외부 API 요청마다 새로운 HTTP 연결을 만드는 문제 기사 분석 결과 저장 과...

In June 2024, I joined the Lee Jae-hoon professor's Network Research Lab at Dongguk University, focusing on AI-enabled networking technologies.As part
1929번 문제는 M이상 N이하의 소수를 빠르게 찾고 출력하는 문제이다.이 문제는 에라토스테네스의 체 알고리즘을 이용하여 풀 수 있다.먼저, vector<bool> isPrime(N+1,true)를 생성하여 모든 수를 소수로 가정한다.그리고 2부터 N까지 배수를

이 포스트는 링크된 블로그를 참고하여 작성되었습니다. -> CLICK!!사진 출처: 네이버 블로그-톨티의 공작소이번에는 위 사진의 순서대로 실습을 진행해볼 것이다. 실습의 편의성을 위해 모든 오픈소스 소프트웨어는 모두 하나의 PC에 설치된다.Mininet으로 가상 네트

이 포스트는 아래 링크를 참고하여 작성했다. 라즈베리파이3에 Open vSwitch(OVS) 설치/OVS 네트워크 구성/ONOS로 직접 Flow Rule 설정하여 VLAN 패킷 제어하기 첨부된 링크와 현재 포스트에는 변경된 사항이 있어, 실습을 해보시려면 위의 링크된

이 포스트는 이 블로그를 참고했습니다! -> click!저 블로그는 ONOS 2.7.0 버전이 아닌 다른 버전을 사용하고 있어 명령어 사용이 달라지는 부분들이 있으니, 최근의 정보를 확인하고 싶다면 제 글을 쭉 따라해보시면 됩니다!window 사용자 기준Ubuntu를

SDN관련 실습이 잘 안되어서, 다른 할 것을 찾아보던 중에 mininet을 이용해서 네트워크 환경을 시뮬레이션 하는 것에 대해 알게되었어요!제가 본 블로그는 아래 링크 첨부합니다.CLick!!가상 네트워크를 통해 SDN이나 Openflow와 같은 네트워크 환경을 시뮬

목차 EC2 생성 RDS 생성 Dockerfile 작성 github secrets에 환경변수 선언 github-actions.yml 코드 작성 application.yml코드 작성 💻 코드 설명 spring.application name Spring
IntelliJ IDEA에서 Run 버튼을 누르면, Spring Boot 애플리케이션(또는 다른 프로젝트)이 실행되기까지 여러 단계가 순차적으로 실행됩니다. 아래는 IntelliJ IDEA에서 Run 버튼의 동작 과정을 설명합니다.IntelliJ IDEA의 Run Co

스프링의 예외 처리 방식을 이해하기 위래 먼저 스프링의 전체적 흐름을 이해해야한다.Spring이 요청에 대한 처리를 어떤 흐름으로 진행하는지에 대한 그림이다. 클라이언트의 요청을 디스패처 서블릿이 받음. 요청 정보를 통해 요청을 위임할 컨트롤러 찾음요청을 컨트롤러로 위

Node.js 앱 만들기 먼저, Node.js 앱이란? > Node.js 앱은 Node.js 런타임 환경에서 실행되는 애플리케이션이다. Node.js는 자바스크립트(JavaScript)코드를 서버 측에서도 실행할 수 있게 만들어주며, 주로 웹 서버, API서버, 또는

도커 이미지를 도커 허브에 있던 것 말고, 1\. 직접 생성해서도 사용할 수 있고2\. 도커 허브에 올려서 공유할 수도 있다.도커 이미지는 컨테이너를 만들기 위해 필요한 설정이나 종속성들을 갖고있는 소프트웨어 패키지이다. 지금까지 해왔듯이 도커 이미지는 Dockerhu

레디스 서버 실행첫 번째 터미널을 실행 후 다음 명령어를 입력한다.docker run redis레디스 클라이언트 실행첫 번째 터미널에서는 실행 후 다시 명령어를 입력할 수 없으니, 두 번째 터미널을 켜서 레디스 클라이언트를 작동시킨다.redis-cli오류발생 🚨!!

docker exec <컨테이너 아이디>이것은 이미 실행중인 컨테이너에 명령어를 전달해주는 역할을 한다.먼저 터미널 2개를 실행한다.첫 번째 터미널에서 컨테이너 하나를 실행한다.(docker alpine ping localhost)두 번째 터미널에서 컨테이너가 잘

지금까지는 docker run<이미지 이름>으로 컨테이너 생성,실행을 했는데, 이것을 docker create와 docker run으로 쪼개서 볼 수 있다.docker run는 파일 스냅숏을 하드디스크로 옮기고, 시작 시 실행할 명령어를 컨테이너에서 실행시켜주는

ps: process status2개의 Terminal을 작동시킨다.첫 번째 Terminal에서 container 하나를 실행(하지만 이때 컨테이너를 켰다가 바로 끄면 3번을 할 때 이미 프로세스가 꺼져있기 때문에 리스트에서 볼 수 없음.)두 번째 Terminal에서

ls가 쓰여있는 자리는 원래 이미지가 가지고 있는 시작 명령어를 무시하고, 여기에 있는 커맨드를 실행하도록 하는 것이다.ls커맨드는 현재 디렉터리의 파일 리스트를 표출한다.도커 클라이언트에 명령어 입력 후 도커 서버로 보냄.도커 서버에서 컨테이너를 위한 이미지가 이미

가상화 기술이 나오기 전한대의 서버를 하나의 용도로만 사용했다. 남는 서버공간은 그대로 방치!하나의 서버에 하나의 운영체제, 하나의 프로그램만을 운영했기에 안정적이지만 비효율적이었다.하이퍼바이저 기반의 가상화 출현 후논리적으로 공간을 분할하여 VM이라는 독립적인 가상