분류 전체보기 97

Elastic Search 가이드 북 - QueryDSL 정리

잇츠 스터디 4기에서 elastic search 스터디를 진행 하면서, elastic 가이드 북 중 QueryDSL 부분을 정리한 글입니다. 검색과 쿼리 - QueryDSLElastic Search 는 사용자가 여러가지 검색 조건을 통한 검색을 할 수 있도록 다양한 쿼리를 제공하고 있다.이러한 쿼리를 QueryDSL 이라고 칭함.모두 json 형식으로 입력해야 함. 풀 텍스트 쿼리?실제로 검색에 사용되는 검색어인 Term 으로 분석 과정을 거쳐 저장하기 때문에 검색 시, 대소문자, 단수, 복수, 원형 여부에 관계 없이 검색이 가능함.match_allmatchmatch_phrasequery_string match_all만약 검색시 쿼리를 넣지 않으면 default 로 해당 쿼리를 이용해 검색해 줌.해당 인..

카테고리 없음 2025.03.30

CDN DTO 1,600GB → 3GB로 비용 절감하기

문제 - CDN 비용이 너무 많이 나온다.커뮤니티 서비스의 특성상, 대량의 이미지가 업로드되고 조회되고 있었다현재 S3에 저장된 이미지는 CDN을 통해 제공되고 있으며,일 평균 16만 건의 요청에, Data Transfer Out 바이트가 약 1,600GB가 사용되고 있었다.이로 인해 한 달에 약 160만 원의 CDN 비용이 발생하고 있었다. 문제의 원인은 다음과 같았다. 1. 비효율적인 이미지 포맷 사용대부분의 이미지는 JPG, PNG 형식으로 저장 및 조회됨해당 포맷은 상대적으로 용량이 크고, 전송 시 데이터 비용이 높음2. 이미지 크기 최적화 부족사용자가 업로드한 원본 이미지를 리사이징 없이 그대로 사용평균 이미지 크기가 약 2MB로, 불필요하게 큰 용량을 차지3. 적합하지 않은 캐시 정책관리형 캐..

Grafana LGTM 톺아보기 (4) - Mimir 란?

그라파나 시리즈의 마지막 글이다. 이전 글이 궁금하다면?2025.01.19 - [개발 아카이브] - Grafana LGTM 톺아보기 (1) - Loki 란?2025.02.02 - [개발 아카이브] - Grafana LGTM 톺아보기 (2) - Alloy 란?2025.02.16 - [개발 아카이브] - Grafana LGTM 톺아보기 (3) - Tempo 란? Grafana LGTM 톺아보기 (3) - Tempo 란?Grafana로 모니터링 서버 구축하기에서 이번엔 LGTM 중 T인 Tempo 에 대해 알아보자 이전 글이 궁금하다면?2025.01.19 - [개발 아카이브] - Grafana LGTM 톺아보기 (1) - Loki 란?2025.02.02 - [개발 아카이브] - Grafansienna1022...

개발 아카이브 2025.03.02

Grafana LGTM 톺아보기 (3) - Tempo 란?

Grafana로 모니터링 서버 구축하기에서 이번엔 LGTM 중 T인 Tempo 에 대해 알아보자 이전 글이 궁금하다면?2025.01.19 - [개발 아카이브] - Grafana LGTM 톺아보기 (1) - Loki 란?2025.02.02 - [개발 아카이브] - Grafana LGTM 톺아보기 (2) - Alloy 란? Tempo 또한 그라파나에서 제공하는 오픈소스이며, 사용하기 쉬운 대규모 분산 추적 시스템이다.Loki, Grafana와 결합돼 유의미한 데이터를 만들어나갈 수 있다. https://github.com/grafana/tempo/tree/main GitHub - grafana/tempo: Grafana Tempo is a high volume, minimal dependency distri..

개발 아카이브 2025.02.16

Grafana LGTM 톺아보기 (2) - Alloy 란?

이전 1편은 Loki에 대해 이야기했다.2025.01.19 - [개발 아카이브] - Grafana LGTM 톺아보기 (1) - Loki 란? Grafana LGTM 톺아보기 (1) - Loki 란?사내에서는 서버의 트래픽을 모니터링하기 위해 datadog 솔루션을 사용하고 있다.물론 너무너무 좋은 서비스긴 하지만, 비용이 고비용이다. 아무리 좋은 서비스도, 우선 백엔드 팀만, 장애가 났을sienna1022.tistory.com 이번에는 Grafana LGTM 의 약자에는 들어가지 않지만 LGTM 이 작동할 수 있게 하는 데이터 수집기 Alloy에 대해 알아보자.어쨋든 우리가 원하는건 서버가 돌아갈 때, 서버의 이벤트들을 모조리 수집해서 그에 맞게 가공하는 것이다.가공 담당이 LGTM 이라면, 실제 서버에..

개발 아카이브 2025.02.02

Grafana LGTM 톺아보기 (1) - Loki 란?

사내에서는 서버의 트래픽을 모니터링하기 위해 datadog 솔루션을 사용하고 있다.물론 너무너무 좋은 서비스긴 하지만, 비용이 고비용이다. 아무리 좋은 서비스도, 우선 백엔드 팀만, 장애가 났을 때만, 모니터링을 하고 있는 점에서 비용 대비 우리 상황에 맞지 않다고 생각한다. 변화가 필요하다. 팀에서는 그라파나에서 제안하는 LGTM 을 통해 모니터링 대시보드를 직접 구성하였고, 사용중이다.그렇다면 그라파나 LGTM 을 빠삭하게 알고 있어야겠지..? 톺아보기를 시작해보자.우선 이야기를 하기 전에, 모니터링 시스템에서 빼놓을 수 없는 철학을 알아야합니다. Observability (관측 가능성)?관측 가능성(Observability)는 시스템의 내부 상태를 외부로부터 관측하고 이해할 수 있는 능력을 의미합니..

개발 아카이브 2025.01.19

눈 깜짝할 사이 지나가버린, 2024 회고

2024년이 금방 지나갔다.2023년에는 가계부 출시와 인턴으로 매우 바빴었는데 2024년에는 더욱이 휙 지나갔다. 분명 연초에는 중국 일본 하와이 제주도를 가며 여행으로 바쁜 나날을 보냈는데,일본에서 아침에 응시한 현재회사의 코딩 테스트가 좋은 결과를 가져다주어,3/26일부터 현회사에서 인턴으로 일을 시작했다.7월에는 정규직이 되었고8월에는 약 4년을 다닌 대학교를 졸업했고9월 추석 때는 혼자 유럽여행을 다녀왔다.벌써 연말이라니, 벌써 약 1년이 되는 개발자라니… 그냥 생각나는 대로 소주제로 나눠서 주절주절 적어본다. 올해 뭐 했니?saa 자격증aws SAA 자격증을 꾸준히 준비하고 있다.그냥 1년 차가 되는데, 뭐라도 성과가 있으면 좋겠다 생각하고 있었다. 나중에 크게 관심 있는 직무가 SA 기도 하..

팬아웃 아키텍처를 활용한 320만개 쿠폰 안정적으로 배포하기

지난 12/26일부터 특정 유저를 대상으로 무료 3,000원 쿠폰을 지급하는 이벤트를 진행했습니다.이번 이벤트의 지급 대상은 약 320만 명으로, 팬아웃 패턴 아키텍처를 도입하여 서버의 부하 없이 연말 이벤트를 성공적으로 마칠 수 있었습니다. 🎁(쿠폰함을 확인해보세요 소근소근) 팬아웃 패턴을 aws 자격증을 준비할 때 학습했는데, 실제 적용할 기회가 생겨 굉장히 뿌듯하였습니다. :)  도입 배경이전에도 유사한 쿠폰 지급 이벤트를 여러 차례 진행했으며, 종종 서버 부하 문제에서 벗어날 수 없었습니다API 서버: 유저가 쿠폰 지급 대상인지 확인한 뒤, 대상자라면 SQS에 이벤트를 발행.Lambda: SQS에서 이벤트를 소비하여 쿠폰 지급 작업을 처리.그 당시에도 쿠폰 지급 대상이 약 300만 명으로 추산 ..

당근 채팅 시스템은 어떻게 만들까?

https://www.youtube.com/watch?v=_F6k0tg8ODo당근 테크 밋업을 보고 정리한 글입니다. N개의 서버를 사용하는 구조에서 채팅 구현하기A라는 사용자와 B라는 사용자가 통신을 하기 위해서는 서로의 세션이 어느 서버에 있는지 알아야한다.이를 위하여, 공유 메모리를 사용했다. 유저 A가 메세지를 발행하고, B 가 어느 서버에 있는지 메모리 저장소를 통해 알아온다.아, B 는 서버 2에있고 IP는 어디니깐, 메세지를 발행한다. 하지만 만약에 서버가 10대로 늘어난다면서버 to 서버로 통신을 하다보니, 네트워크의 복잡도가 증가한다. 그래서 당근은 확장에 유리한 구조를 가져가기 위해 메세지 큐를 도입했다.A가 메세지를 보내서 B에게 메세지를 보내달라고 요청하는 이벤트를에 넣는다 ⇒ co..

개발 아카이브 2024.12.08

slack 파일 업로드, completeUploadExternal(),getUploadURLExternal() 사용법

슬랙에 파일을 보내기 위해 대부분 사용하고 있던 files.upload()함수가 2025년 3월 11일에 종료됩니다.대안으로, files.getUploadURLExternal 과 files.completeUploadExternal 함수를 사용하라고 하는데,코드 예시가 많이 없어 불편해서 글을 작성하게 되었습니다.과정은 대략 이렇습니다. 파일 업로드할 url 가져오기1번에서 받은 url로 파일 올리기1번에서 받은 파일 아이디로 슬랙 전송하기파일 업로드할 URL 가져오기Requestparams 에 filename(파일이름), fileLength(파일길이) 추가return await instance({ method: 'post', url: '', headers: { Authorizat..

개발 아카이브 2024.11.19
728x90