분류 전체보기692 [Linkllet] 검색 쿼리 개선하기 (by 커버링 인덱스) 우선 이번 테스트는 M1 맥북, 메모리 16G의 노트북에서 docker 환경의 MySQL에서 수행되었습니다. 전체 article 데이터 약 87만건을 기준으로 실험하였습니다. 1. 문제 되는 상황 우선 원래의 "프로그램"을 검색하는 query는 다음과 같다. select a.article_id, a.title, a.link, a.created_at from article a where a.member_id = 1 and (a.title like '%프로그램%' escape '!') order by a.created_at asc; 실행 결과는 다음과 같다. 약 2.4초가 걸렸으며, 데이터의 건수는 485건이 조회된다. 검색 쿼리의 실행계획은 다음과 같다. 몇 가지 살펴보자! type이 ALL로 되어 있는거.. BackEnd/Linkllet 2023. 8. 13. [Kafka] Multi-Service 간의 데이터 동기화 1. 문제의 상황 여러 개의 독립된 Order Service가 동작하고 있는 상황에서, 각 OrderService마다 DB를 할당하게 된다면 동기화 작업이 힘들어진다. 예를 들어 초콜릿의 재고가 초기에 10이었을 때, OrderService A에 주문이 들어와 3개가 감소하여 7개가 되었다 생각해 보자. 하지만 OrderService B에 할당된 DB에는 여전히 재고가 10개 있으며, 이는 DB 간의 데이터 동기화를 어렵게 만드는 주범이 될 것이다! 예를 들면 다음과 같은 것이다! 현재 사이드로 구현 중인 미니 프로젝트에서 UserService에서 주문 요청 -> Service Discovery를 통해 해당 서비스 찾기 -> 해당 OrderService에 주문 요청을 하게 된다. 2개의 OrderServ.. BackEnd/Kafka 2023. 8. 8. [Nexters] 23기 5주차 기록 1. 5주 차 활동 이번 주차는 중간발표의 날이었다! 이번 주차의 경우 각 팀별로 중간 점검을 함과 동시에, 발표를 진행하는 시간이었다! 당연히 나 같은 경우 발표를 길게 하는 스타일이 아니기 때문에 "어떻게 해야 핵심만 전달하고 끝날까?"를 고민했고, 그 결과 다음과 같이 단 한 장의 메인을 중심으로 PPT 발표를 진행하게 되었다! 우리 팀 앱 스토어에 나왔다~ 스토어에 Linkllet 앱을 배포하게 되었다!, 당시에 안드로이드는 심사 중이라 배포가 되지 못했지만, 금방 2일 안에 배포되어 현제는 구글스토어에서도 확인해 볼 수 있다! 이 이상 뭐가 필요한가! 이후에는 앱의 메인 기능을 짧게 설명한 후, 현 상태에서 아쉽게 느껴지는 기능들을 설명한 후 어떻게 개선할지 설명하게 되었다. 다행히 생각한 것처.. Life/Nexters 2023. 8. 3. [서평] 아토믹 코틀린 저의 돈으로 직접 사서 직접 완독해 본 후 써보는 후기입니다. 따라서 장점은 장점대로 칭찬할 것이며, 단점은 단점대로 언급할 것입니다. 아토믹 코틀린 : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com Java를 거의 2년 가까이 사용해오다 보니 자연스럽게 JVM위에서 동작하는 다른 언어에 관심이 생기기 시작했다. 더 나아가 요즘 인기가 많아지고 있다 느낀 Kotlin에 대하여 관심이 있었기에 코틀린을 처음 배우고자 입문서로 선택하게 되었다. 2023/06/28 ~ 2023/07/26 1) 책의 표지 2) 단원별 구성 3) 읽은 소감 우선 저의 글의 앞부분만 보는 분들을 위해 먼저 간단히 4가지에 대해 답해보겠습니다. Q 이 책을 읽기 전에 필요한 수.. Life/Book Record 2023. 7. 26. [Nexters] 23기 4주차 기록 1. 4주 차 활동 이번 4주차에는 User Test를 진행하는 시간이었다! 팀 2개가 한 조로 이루어져 서로의 앱을 테스트해 주고 피드백을 받는 시간이었다! 우리와 한 조가 된 "넥스트 룸" 팀에서 좋은 피드백을 많이 남겨주어, 나 또한 피드백을 많이 남기려 노력하였다! 확실히 22기 때의 UT의 방식보다 이번에 개편된 UT가 더 좋은 방식이었다 생각된다. UT를 개편해 주신 운영진 분들께 감사의 말을 전한다! 2. UT 시작 우선 디자이너 분들이 만들어 주신 프로토 타입은 다음과 같다. Figma Created with Figma www.figma.com 다행히 빠른 앱 개발 덕분에 UT를 실제 사용가능한 테스트 앱을 통해 진행할 수 있었다. 한 가지 아쉬웠던 점은 Android팀이 원래 UT때 ap.. Life/Nexters 2023. 7. 25. [Linkllet] 흔한 N+1 문제 해결하기 1. 문제 되는 상황팀원 중 한 분이 폴더 목록을 조회할 때, 해당 폴더 내부에 몇 개의 링크가 저장되어 있는지 그 원소의 수 또한 함께 전달해 달라 요청해 주셨습니다.이 카톡을 처음 봤을 때 시간이 늦은 시간이었던 지라 매우 간단하게 생각하고 다음날 바로 구현하겠다 하고 눈을 감았습니다만.... 그럴 때 있잖아요? 뭔가 실수한 거 같아서 눈은 감고 있지만 계속 생각날 때?머릿속에 스쳐 지나가는 N+1 쿼리 문제.... 아 이거 폴더마다 count 쿼리가 날아갈 텐데... 아읔....일단 자야지 하면서.... 계속 어떻게 구현할지 생각하다 잠들어버렸습니다..... 다음날 눈 뜨자마자 N+1을 외치면서 눈을 뜨게 되었습니다... (진짜로.. 눈뜨자 마다 이생각부터 난...) 1 - 1) ER 다이어그램현제.. BackEnd/Linkllet 2023. 7. 21. [쿠링] 테스트 서버의 간헐적 다운 현상 (feat, Prometheus & Grafana) 1. 문제가 되는 상황테스트 서버가 새벽에 지속적으로 다운되는 현상이 발생하고 있다.... 로그만으로는 정확한 원인을 파악하기 힘들어... prometheus와 grafana를 통해 메트릭을 정확하게 측정하게 되었다. 총 3부분을 살펴보았다.1) CPU 사용량2) JVM 메모리 사용량 초과3) 커넥션 풀 고갈4) vmstat 확인 2. 모니터링2 - 1) CPU 사용량?우선 다음 지표를 살펴보자정기적으로 새벽 2기에 작동하는 작업이 있기 때문에 0시 ~ 4시 의 지점을 살펴보게 되었다.다행히 터진시각 또한 대략 3시 15분경인데, 그래프에 보이듯 System CPU 사용량이 정상대비 증가하다 다운된 것 같다. 평균값이 0.00939인 상황에서 CPU 사용량이 0.0682까지, 약 7배가량 CPU 사용량이.. BackEnd/쿠링 2023. 7. 17. [Nexters] 23기 1주차 기록 1. Nexters 23기 시작! 아니 벌써 6개월이 지나서 23기를 시작한다고?? 시간이 너무 빠르게 지나간 것 같다... 지난번 22기 하던 게 엊그제 같은데... 벌써 2번째 기수라니... 기대반 설래임 반으로 23기에 지원하게 되었다. 다행히 Nexters는 2번까지는 제약사항 없이 참여할 수 있어서 선배 기수들처럼 수강신청 광클해서 진행하지는 않았다! 이번 23기에 나름 목표하는 몇가지가 있다. 차차 설명하겠지만, 일단 1번인 PM 도전은 성공하기는 했다(?) 1) PM 도전 2) 팀 여행 3) 빠른 프로젝트 배포 4) 독서 모임 (프로젝트 배포 이후) 5) Kotlin + Spring 도전기 사실 Nexters 23기 활동 말고도, 개인 사이드 프로젝트인 쿠링 유지보수 작업과 더불어, 정보처리.. Life/Nexters 2023. 7. 4. [서평] 컴퓨터 구조 및 설계 저의 돈으로 직접 사서 직접 완독해 본 후 써보는 후기입니다. 따라서 장점은 장점대로 칭찬할 것이며, 단점은 단점대로 언급할 것입니다. 컴퓨터 구조 및 설계 : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 항상 컴퓨터의 좀 더 하드웨어에 가까운 부분에서 어떤 일들이 일어나는지 궁금했었다. 이 책은 그에 대한 답변으로 완벽에 가까운 해답과 더불어, 컴퓨터를 더욱 좋아하게 되는 아주 좋은 책이었다. 2023/03/03 ~ 2023/06/19 1) 책의 표지 2) 단원별 구성 3) 읽은 소감 우선 저의 글의 앞부분만 보는 분들을 위해 먼저 간단히 4가지에 대해 답해보겠습니다. Q 이 책을 읽기 전에 필요한 수준/ 지식은? => 원래 학교 교과과정 순으로.. Life/Book Record 2023. 6. 22. [컴퓨터 구조] 4. 프로세서 4.1 서론 4.1.1) 구현에 대한 개요 우선 모든 명령어의 첫 2단계는 다음과 같이 동일하다. 프로그램 카운터(PC)를 프로그램이 저장되어 있는 메모리에 보내서 메모리로부터 명령어를 가져온다. 읽을 레지스터를 선택하는 명령어 필드를 사용하여 하나 또는 2개의 레지스터를 읽는다. 워드 적재 명령어는 레지스터 하나만 읽으면 되지만 대부분의 다른 명령어는 레지스터 2개를 읽는다. 이 2단계 이후는 명령어의 종류에 따라서 달라진다. 다행히 3가지 명령어 종류(메모리 참조, 산술/논리 연산, 분기) 각각에 대해서는 명령어가 무엇인지에 상관없이 필요한 행동들이 대부분같다. MIPS 명령어 집합은 단순하고 규칙적이기 때문에 여러 종류의 명령어 실행이 비슷해서 구현이 간단하다. 예를 들어 Jump명령어를 제외한 모.. CS/Computer Organization Design (2023-1) 2023. 6. 16. [쿠링] 홍보 부스 후기 (feat 건국대 일감호 축제) 건국대 일감호 축제에서 2일간 "쿠링 홍보 부스"를 운영하면서 경험한 내용을 기록해볼까 한다! 1. 부스 신청부터 ~ 준비까지 1.1) 일단 신청부터 사실 신청 당일까지만 하더라도 내가 부스 대표자가 될 거라는 생각은 1도 하지 못하고 있었다.... 하지만 눈떠보니 부스 대표자가 되어 있었다랄까? 하지만 대표자가 된 이상, 성공적으로 끝까지 부스를 완주시키고 싶었다! 일단 부스 이름은 "쿠리의 공지 단속"으로 정하게 되었다. 요즘 인기있는 영화 제목을 이용한 "우영" 님의 아이디어 였는데, 가장 마음에 드는 이름이라 좋았다! iOS개발자 이시지만, 디자인까지 함께 해주신 "재성"님께 감사의 인사를 다시 한번 전한다! 1.2) 팀원들과 거침 없는 회의 팀원 대부분이 직장인이기 때문에, 회의 시간 동안 많은.. BackEnd/쿠링 2023. 5. 20. [쿠링] 검색 쿼리에 Full Text Index 적용하기 해당 글은 개인 프로젝트를 개선해 나가면서 내용을 정리하는 글입니다.1. 문제 되는 상황현 쿠링은 검색어를 입력받으면 like절을 사용하여 원하는 text를 필터링하고 있다.SELECT * FROM notice WHERE notice.contents LIKE '%장학금%'explain을 통해 실행계획을 보면 다음과 같다.예상했듯.... full scan을 하고 있다... 그래도 스토리지 엔진에서 데이터를 불러온 후, 100% filtering 하고 있는 걸 보면 조건절이 스토리지 엔진에 전달되어 필요한 데이터만 가져왔음을 알 수 있다. 이러한 방식은 검색한 text의 내용이 많아지면 어마어마하게 성능이 저하된다.몇 년 치 데이터에서 like로 검색을 한다 생각하면.... 과부하가 발생하고, respons.. BackEnd/쿠링 2023. 5. 11. 이전 1 2 3 4 5 6 ··· 58 다음