본문 바로가기

분류 전체보기68

[대규모 시스템 설계] Kafka의 기초 Kafka 기본 개념 정리1. Kafka Cluster와 BrokerCluster: 여러 Kafka Broker가 모여서 이루어지는 것. Broker는 하나의 Kafka 서버를 의미.Broker: 데이터를 저장하고, Producer로부터 데이터를 받아와 Consumer에게 전달하는 역할을 수행.2. Consumer LagLag: Producer가 데이터를 추가하는 속도가 Consumer가 데이터를 소비하는 속도보다 빠를 때, 마지막으로 소비된 오프셋(offset)과 마지막으로 추가된 오프셋 간의 차이. Consumer의 상태를 파악하는 데 중요한 지표로 사용됨.3. Topic과 PartitionTopic: Kafka에서 데이터를 저장하고 관리하는 단위.Partition: Topic을 분할한 단위. 각 P.. 2024. 11. 15.
[백엔드 기술 면접] #4 Server (2) #4 Server (2)Q. API Rate Limiter를 구현할 수 있는 알고리즘 4가지를 설명해보아라.A. 첫 번째는 토큰 버킷 알고리즘입니다. 요청을 처리할 때마다 버킷에서 토큰을 꺼내 사용하는 방식으로, 토큰이 남아있으면 요청이 처리되고 없으면 요청이 버려집니다. 짧은 시간에 집중되는 트래픽을 처리할 수 있어 유용하지만, 버킷 크기와 토큰 공급률 설정이 까다로울 수 있습니다. 두 번째는 누출 버킷 알고리즘으로, 고정된 크기의 FIFO 큐를 사용해 요청을 관리합니다. 큐에 자리가 있으면 요청이 추가되고, 큐가 가득 차면 요청이 버려지며, 안정적인 처리율을 보장하지만 트래픽이 몰리면 새로운 요청이 처리되지 않을 수 있습니다. 세 번째는 고정 윈도 카운터 알고리즘입니다. 타임라인을 고정된 간격의 윈도.. 2024. 11. 14.
[DB] CSV 파일 데이터 DB에 업로드 CSV 파일을 사용하는 이유초기 데이터를 몇 개만 추가해야 한다면, 그냥 우리가 직접 DB 콘솔에 접속해서 하나하나 데이터를 넣거나 하면 된다. 하지만, 사실 우리가 데이터가 한두개일리가 절대 없다. 예를 들어, 공공데이터 포탈에서 데이터를 받아올 경우, 데이터가 수천, 수만건이 될 것이다. 이때, 이 데이터들을 하나씩 직접 입력하는 것은 비효율적일 뿐 아니라 시간이 많이 소요된다. 또, 만약 테이블이 통째로 삭제되는 문제가 발생한다면,수만개의 데이터를 다시 입력해야 하므로 상당한 노력이 필요하게 된다. CSV 파일을 활용하면 이런 문제를 해결할 수 있다. 한 번에 많은 데이터를 가져와 데이터베이스에 바로 삽입할 수 있기 때문에, 대량의 데이터 처리가 필요한 경우 CSV 파일 업로드는 훨씬 더 효율적이고.. 2024. 11. 13.
[개발] NGINX 기초 Nginx란?Nginx란 비동기 이벤트 기반 구조의 경량화 웹서버이다. 주로, 정적 파일을 응답해주는 웹서버로 사용하거나, Reverse Proxy Server로 활용하거나, 로드밸런서의 역할을 하거나, HTTPS 인증을 할 때 쓰인다. 시작하기 앞서, Nginx 설치에 어려움을 겪거나, 귀찮게 설치 안해보고도 테스트 해보고 싶은 분들은 Nginx를 웹에서 테스트 해볼 수 있는 Nginx Playgorund를 사용해보자.  nginx playground nginx-playground.wizardzines.comNginx를 활용할 수 있는 방안1. 정적 캐싱 서버 : Nginx의 캐싱 기능을 이용해 정적 콘텐츠(예: 이미지, CSS, JavaScript 파일 등)를 캐시함으로써 서버 부하를 줄이고 콘텐츠를.. 2024. 11. 12.
[백엔드 기술 면접] #3 Server (1) #3 Server (1) Q. 리버스 프록시와 포워드 프록시 차이는 무엇인가?A. 리버스 프록시는 클라이언트 요청을 받아 여러 서버로 전달하여 로드 밸런싱, 캐싱, 보안, SSL 암호화 등을 제공하며 주로 서버 측에서 사용되고, 예로는 Nginx, HAProxy가 있으며, 포워드 프록시는 클라이언트가 인터넷에 접근할 때 프록시 서버를 통해 접속하여 IP 숨기기, 콘텐츠 필터링, 캐싱 등을 제공하며 주로 클라이언트 측에서 사용됩니다. Q. WS와 WAS의 차이는 무엇인가?A. WS(Web Server)는 정적 콘텐츠(HTML, CSS, JS)를 제공하고 주로 HTTP 요청을 처리하며 예로는 Apache, Nginx가 있고, WAS(Web Application Server)는 동적 콘텐츠를 처리하고 비즈니스.. 2024. 11. 11.
[Spring] OpenSearch를 이용한 검색어 자동완성 기능 제작 검색어 자동완성을 구현하는 가장 쉬운 방법은 RDB에서 매번 특정 칼럼에 Like문을 때리는 것이다. 그런데 이렇게 하면 문제가 있다. 첫번째, 검색어 자동완성 자체가 이벤트가 일어날 때 마다 지속적으로 api 요청을 보내는데, 거기에 Full Scan으로 검색하는 RDB Like 문으로 검색하면 DB 부하가 장난 아닐 것이다. 두번째, 모든 데이터가 영어로 보장되있다면 그나마 괜찮은데 (인덱스를 활용하면 되기 때문), 한글 데이터가 들어가는 순간, Like 문 검색은 반드시 피해야된다. 왜냐하면, 한글 특성상 DB 인덱스를 사용하기 매우 어렵기 때문이다. 한글은 자모음 분리가 가능하고, 초성 검색 등의 특수한 경우를 고려해야 하기에, 기본적인 Like 문으로는 성능이 급격히 떨어진다.  따라서, Ela.. 2024. 11. 10.
[AWS] AWS Lambda의 활용 Serverless란 무엇인가?많이들 오해 하는데, 서버리스라는게 백엔드 서버가 없다는 뜻이 아니다. 우리가 직접 서버를 관리하지 않아 신경 쓸 필요가 없다는 의미로 서버리스라고 부르는 것이다.  필요한 컴퓨팅 리소스와 스토리지만 동적으로 할당한 다음, 그 부분에 대해서만 비용을 청구하는 모델이다. 사용한만큼 비용이 청구되기 때문에 매우 경제적이며 자원을 효율적으로 사용이 가능. 비용도 굉장히 저렴하다.  300원에 200만뷰 소화하기 - 서버리스 아키텍처 AWS 람다(Lambda) 활용 사례 - 로켓펀치 공식 블로그  로켓펀치에서는 기본적인 웹 서비스 외에 제휴를 통해 로켓펀치의 채용 공고를 위젯 형식으로 노출하는 경우가 있습니다. (예 : 플래텀 오른쪽 사이드바 위젯) 이런 위젯들을 운영하다 보니bl.. 2024. 11. 9.