
최근 사내에서 디비 리소스를 과부하시키던 쿼리가 존재했고 해당 쿼리가 포함된 API의 성능 향상 과정을 사내에서 발표하게되어 그 과정을 개인 블로그에도 따로 기록해 본다. 1. 이슈 발생- 최근 사내에 디비 리소스 과부하에 대한 알람 경보가 울렸고 그 당시 쿼리 개선을 한참 공부하고 있던 터라 성능 개선을 해보기 위해 개인 시간에 사부작사부작 참전을 해보기로 마음먹게 되었다. 2. 로직의 대표적인 문제 점해당 로직은 회사의 레거시 시스템에 포함된 어드민 조회 로직이었으며 아주 많은 문제를 담고 있었다. 그 중 대표적인 것들만 기록해본다.1) N+1 로직 - 해당 로직에는 N+1 로직이 존재하였으며 그로인 해 쿼리가 여러 번 불리는 문제가 존재했다. 따라서 해당 쿼리들을 in 절로 한꺼번에 부를 수 있도록..

비전공자로서 개발자로 일하면 특히 면접시에 항상 듣는 질문이 있다. 비전공자로서 내가 가지는 단점이 무엇이냐고.....물론 여러가지가 있을 수 있겠지만 나는 그 중에 하나가 Computer Science 에 관한 지식이라고 생각한다. 항상 마음만 먹고 흐지부지 되기 일 수 였는데 이번에는 본격적으로 공부를 해보기로 마음 먹었다. 그러던 와중 동료 중 한명이 핀토스 를 추천해주었고 같은 부서의 개발자 친구와 2인 1조로 같이공부를 해보자고 제안 하였다. PintOS - 나무위키 PintOS는 스탠포드 대학교 컴퓨터 공학과 수업 'CS 140'을 위해 개발된 교육용 mini OS이다. Pintos Project는 총 4단계로 나누어져 있으며, 각 단계 별로 OS의 필수 구현 사항들을 완성하게 된다. 국내 대..
감기가 심하게 걸려 하루 종일 집에 있는 와중에 조금씩 정신을 차리고 심심해져서 평소에 궁금했던 axios 관련해서 소스를 분석해보았다. 그런데 소스의 util 부분에 다음과 같이 소스가 있는 것을 알게 되었다. function isUndefined(val) { return typeof val === 'undefined'; } 그래서인지 소스를 보다보면 undefined을 체크하는 부분은 아래와 같이 위의 소스를 사용해 체크를 하고 있었다. function setContentTypeIfUnset(headers, value) { if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { headers['Content-Ty..

드디어 Hacktoberfest 2019 티셔츠가 도착했다! 사실 지인 후기를 듣고 한 일 년은 걸리 겠거니 했는데 2달 만에 도착을 해서 깜짝 놀랐다. 🤔 Hacktoberfest란 무엇일까? Hacktoberfest란 매년 10월에 열리는 오픈소스 장려 이벤트로 10월동안 오픈소스에 4개의 PR을 성공적으로 올리면 티셔츠를 주는 이벤트이다. 나는 이 당시 컨트리뷰톤에 참가 중이었고 멘토님이 소개해주셔서 참가하게 되었다. https://hacktoberfest.digitalocean.com/ Hacktoberfest presented by DigitalOcean and DEV Open source is changing the world – one pull request at a time. hacktob..

Linkedin에 들어갈 때마다 내가 프로필에 적어놓은 기술 관련해서 강의 추천이 계속 뜨길래 Linkedin Learning을 등록하였다. 참고로 한 달은 무료이다. 들어가서 살펴보던 중 Gradle 강의가 있기에 들어보았다. 마침 Production용으로 Gradle을 사용해본적이 없어서 이번 토이 프로젝트에 사용하려고 Gradle 관련해서 공부해봐야지 생각하고 있던 차에 강의시간도 짧아서 더욱 끌렸던 것 같다. 강의 시간은 총 2시간 30분 으로 엄청 짧았다 😄그렇지만 짧은 시간 동안 Gradle에 관련해서 대략적으로 이해할 수 있는 기회였다. 강의를 통해 Gradle의 사용목적, 직접 plugin작성 build.gradle 파일 기본 설정을 해볼 수 있어서 좋았다. 항상 생각하는 건데 이렇게 대략..

Udemy에서 A Comprehensive Introduction to Java Virtual Machine (JVM) 강의를 들었다. 사실 총 4시간밖에 안 되는 짧은 강의였다. 그렇지만 JVM에 대해 아는 게 없어서 강의를 들을 때마다 모르는 부분을 검색해서 상세 설명을 보느라 오래 걸렸다. 우선 해당 강의를 등록한 이유는 다음과 같다 1. JVM 덕분에 Java가 플랫폼에 독립적 이라는 사실을 알고는 있었지만 정확히 어떻게 동작하는 지를 모르고 있었음. 2. 주니어 개발자에서 중니어, 시니어 개발자로 올라갈 때마다 앞으로 성능 튜닝에 대한 문제를 많이 생각해 봐야 될 것 같다는 생각이 들었는데 내 주 언어인 Java의 성능 튜닝을 위해서는 JVM 튜닝하는 방법을 알아야 한다는 걸 깨닫게 됨. 사실 ..