서문 fluentd를 도입하게 되는 발단 및 원인에 관한 글. mysql bulk insert가 효율적인가에 대한 실험을 설명한 글이다. 이번 글에 fluentd에 관한 얘기는 안나온다. 발단 원할한 서비스를 위하여 정각, 30분단위 등 특정 시간마다 성능 최적화를 위한 raw 데이터 가공 등 여러 배치작업 처리하고 있다. 이러한 배치 작업을 처리하는 중 일시적으로 DB Cpu 로드율이 100%에 도달해버리는 너무 마음이 아픈 상황이 지속적으로 발생하였다. 고객수 및 고객사의 방문자 수가 점차 증가하면서 발생한 이슈여서 기쁜마음으로 해결을 위해 분석을 진행했다. 분석 배치작업을 위해 raw 데이터를 select하는 과정에서 테이블 락 상황에서 insert 되는 사용량 통계에 대한 데이터의 양이 상당하고,..
fluentd:v1.14.6-debian-1.0 도커 이미지를 기반으로 fluent-plugin-mysql을 사용하는 fluentd 컨테이너 구성 중, 로컬(wsl2)환경에서는 문제없던 도커파일이 개발서버에서는 아래와 같은 에러를 출력하면서, 빌드에 실패하였다. dpkg: dependency problems prevent configuration of libpaper-utils: libpaper-utils depends on libpaper1; however: Package libpaper1:amd64 is not configured yet. dpkg: error processing package libpaper-utils (--configure): dependency problems - leaving ..
반복문으로 uuid 생성 시, 같은값이 생성되어서 DB에 로그가 저장되지 않는 이슈가 발생하였다. uuid에 대한 설명은 링크의 글을 참조바란다. (https://velog.io/@ajongs/UUID-v1-vs-v4) node.js uuid 모듈로 아래와 같은 코드로 uuid를 생성 후, const uuidV1 = require("uuid").v1; for (const datum of data) { const uuid = uuidV1(); } 반복문으로 생성된 uuid를 비교한 결과 간혹 같은 값이 출력되는 경우가 발생하였다. uuid v1의 경우 타임스탬프 기준으로 생성되는데, 반복문의 빠른 실행으로 타임스탬프가 겹쳐 같은 uuid가 생성된 것으로 추측된다. uuid 생성 함수에 옵션으로 나노세컨드를..
통신사 이슈 이전글에서 설명한 것과 같이, Binary 파일을 바로 전송할 수 있게 SDK 수정을 마치고 실제 연동 테스트를 진행했다. 통신 3사 테스트 결과 KT, LG U+는 문제 없었으나 SKT만 통신사 API단에서 509 에러코드를 반환받고 전송에 실패했다. 특정 통신사만 이슈가 발생하고, 팝빌 SDK 가이드에서는 509 에러에 대한 안내가 없어 혼자 해결하기 힘들다고 판단했다. 즉시 팝빌 기술지원센터에 전화했고, 전송 실패한 이미지들의 제출을 요청 받았다. 이미지를 제출하고 10분정도 시간이 지나고 팝빌측에서 이미지가 jpeg가 아닌 webp라 SKT에서 처리하지 못한다는 답변을 받았다. 이미지 리사이징을 진행하는 코드 부분이 의심이 가서 확인하니, 실제로 jpeg 이미지를 webp로 바꾸고 다..
개요 고객사에서 문자전송 서비스 업체를 팝빌로 선정해서 SDK 연동이 필요했고, MMS 전송시 이미지를 담아 전송해야했다. 팝빌 SDK MMS 전송 함수 messageService.sendMMS(CorpNum, Sender, Receiver, ReceiverName, Subject, Contents, FilePaths, reserveDT, adsYN, requestNum, success, error) FilePaths 파라미터에 이미지 URL을 넣어야 한다는 API 문서를 보고 Object Storage에 저장된 이미지 External URL 이미지의 Data Uri 둘을 넣어서 API를 호출해 보았으나, 파일을 찾을 수 없다는 에러만 리턴받았다. 그래서 SDK를 열어봤더니, FilePaths를 입력받아..
개요 회사에서 StyleAR 서비스에 nginx에 캐싱을 도입하게 된 배경 및 과정 nginx 캐시에 대한 설명이 아닌, 도입을 하며 발생한 이슈들을 해결하는 과정을 설명하는데 목적이 있다. 도입 배경 서비스의 고객이 증가함에 따라 특정 시간대, DB Cpu 이용량이 증가하여 병목현상 발생. 이를 해결하기 위하여 DB로 요청사항을 줄여야겠다는 분석을 하게됨. 그 방법으로는, nginx단에서 API 요청을 캐싱해서 앱서버 자체가 동작하지 않아, 자연스럽게 DB 부하 낮추기 redis와 같은 인메모리 DB를 도입하여 DB에서 받아온 결과를 메모리에 임시저장하여 DB 단 요청 줄이기 2가지 정도로 고려하였는데, 제일 앞단에서 캐싱하여 앱서버 부담도 줄일고, API 응답시간도 줄일 수 있는 1번 방법을 먼저 도..

css로 텍스트에 그라디언트 먹이는 방법. 1. background를 원하는 그라디언트, size 100%, repeat으로 설정 (특정 브라우저 gradient 안 먹힐 경우를 위해 background-color도 설정) .gradient-text { background-image: linear-gradient(90deg,#0380be,#47bd9c 50%,#dde21f); background-size: 100%; background-repeat: repeat; background-color: #0380be; } 2. background-clip 을 text로 설정하여 background가 text에 적용되도록, text-fill-color를 transparent로 설정하여 텍스트를 투명으로 변경하여 ..
- Total
- Today
- Yesterday
- mms
- 혼자 공부하는 컴퓨터구조 + 운영체제
- fluent-plugin-s3
- uuid v1
- log forwarder
- nginx cache
- popbill
- 대규모 시스템 설계 기초
- libpaper-utils
- reverse proxy cache
- 뉴스피드 시스템
- fluentd
- tojson
- rewrite_tag_filter
- nestjs
- 팝빌
- log
- log aggregator
- default-libmysqlclient-dev
- uuid 중복
- mms 연동
- reverse proxy
- split_array
- fluentd-plugin-split-array
- rewrite-tag-filter
- dockerfile
- nginx api cache
- fluent-plugin-mysql
- forwarder
- bigint to number
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |