728x90
728x90
소나큐브(Sonarqube) 도입하기
삽질/업무2024. 11. 12. 18:45소나큐브(Sonarqube) 도입하기

배경최근 몇 차례의 코드 리뷰 경험들로 공유하는 문화가 얼마나 큰 이펙트가 있는지 경험할 수 있었다. 하지만 현재 조직에서는 홀로 서버 개발을 진행하다보니 내가 작성하고 있는 코드가 과연 좋은 방향으로 나아가고 있는 것인지 혹은 구조적이나 가독성 등 좋은 코드를, 올바른 설계를 하고 있는 것일까? 라는 의구심이 생겼다. 또한, 여러 번 기술 면접을 다녀왔는데 많은 조직에서 내부적으로 소나 큐브를 정적 코드 분석 도구로 활용하고 있었다.소나큐브를 통해 받을 수 있는 코드 리뷰를 통해 코드 품질 향상과 더불어, 코드 일관성 등의 컨벤션도 정립하고자 도입하게 되었다.   설치 Installing from Docker | SonarQube DocsExplains how to install the SonarQub..

의존성 제어 2 - HTTP 클라이언트 의존성 낮추기
삽질/업무2024. 11. 1. 17:57의존성 제어 2 - HTTP 클라이언트 의존성 낮추기

[NestJS] 의존성 제어 1 - 레이어간 의존성 낮추기(Layered Architecture)최근 인프랩 면접에서 얻게 된 코드 리뷰를 통해 현업에서 사용하고 있는 코드들에 대해 되짚어 보고 있다. 값진 경험을 통해 메타인지를 할 수 있게 되었고, 오답이라고 생각하는 부분에 대한 mag1c.tistory.com 1편의 연장선으로, 실제 기술 면접의 코드 리뷰에서 mysql2에 의존적인 코드를 어떻게 변화에 유연하게 만들것이냐는 질문을 받았다. 레이어간 역할을 명확하게 하는데 그치지 않고 데이터베이스에 엑세스하는 레이어를 두 단계로 나눠서, 레포지토리 레이어는 단순 쿼리 실행 레이어로 인프라 레이어를 데이터베이스와 연결하는 레이어로 두어 인프라 레이어만 교체하게끔 할 수 있다고 생각했다. ORM, DB..

Docker에서 PM2로 전환하여 배포 시간 단축하기
삽질/업무2024. 10. 29. 17:44Docker에서 PM2로 전환하여 배포 시간 단축하기

전환 이유레퍼런스들을 찾아보면, 대부분이 PM2를 통해 간편하게 인스턴스를 띄워 사용하다가, 컨테이너 단위로 전환하고 노드 환경에서는 추가로 pm2-runtime을 도커 컨테이너 내부에서 적용하는 경우를 많이 봤던 것 같다. 나는 반대로, 현재 운영중인 서비스를 계속해서 개발하면서 겪은 문제들을 개선하기 위해 배포 파이프라인을 Git Actions - Docker에서 Git Actions - PM2로 전환하였다. 1. 긴 배포 시간 (길면 3~5분, 평균 1분 후반대)2. 간헐적인 서비스 장애 탐지의 위치 이동 서버와 백엔드 코드를 혼자 관리하다 보니 빈번하게 코드를 업데이트해야 한다. 테스트 같은 안전 장치의 통과를 위해 소요되는 시간은 언제나 수긍하지만, Docker 프로세싱의 긴 소요 시간은 점차 ..

의존성 제어 1 - 레이어간 의존성 낮추기
삽질/업무2024. 10. 19. 09:22의존성 제어 1 - 레이어간 의존성 낮추기

최근 인프랩 면접에서 얻게 된 코드 리뷰를 통해 현업에서 사용하고 있는 코드들에 대해 되짚어 보고 있다. 값진 경험을 통해 메타인지를 할 수 있게 되었고, 오답이라고 생각하는 부분에 대한 리팩토링을 진행하고 있다. 특히 이번에는 면접 당시에 서비스 레이어와 인프라(DB) 레이어 사이의 의존성에 대해 피드백을 들었던 부분을 바탕으로 실제 코드를 개선하고 그 과정에서 꼬리에 꼬리를 무는 의문들을 정리해보는 시간을 가지고자 한다.  import { Injectable } from '@nestjs/common';import { InjectRepository } from '@nestjs/typeorm';import { Repository } from 'typeorm';import { User } from './u..

[사이드 프로젝트] 운동 기록앱 "오운완" 제작기 - 1
삽질/사이드 프로젝트2024. 5. 20. 14:33[사이드 프로젝트] 운동 기록앱 "오운완" 제작기 - 1

어느덧 30이 되어가는 나이에, 2년 가까이 공부를 핑계로 몸관리에 소홀해졌다.어디가서나 얘기하는 사소한 것도 기록하는 습관이 장점이에요!!! 는 살다보니 기록하지 않으면 수행하지 않는다. 가 되어버렸다.2년 내내 헬스장에 등록은 되어 있었으나, 관장님들이 가장 좋아하는 스타일(?)인 유령회원이 되어버렸다. 1달에 1번 갈까말까.. 내가 직접 만든 기록 서비스를 사용하면 더 열심히 운동할 것만 같았고직접 헬스장에서 운동을 하면서 기록을 하기 위해 모바일 앱으로 가닥을 잡고 작업을 시작하게 되었다. 3월 중순부터 1달 반 정도의 제작 기간을 거쳐 작업했고, 현재는 어떤 이슈들 때문에 릴리즈 전 단계에서 테스트중인나의 첫 애플리케이션에 대해 간단하게 기록하고 나아갈 방향에 대해 서술해보고자 한다. 더보기  ..

웹뷰로 기존 NextJS를 모바일 앱으로 배포하기
삽질/사이드 프로젝트2024. 4. 30. 13:56웹뷰로 기존 NextJS를 모바일 앱으로 배포하기

초년차 백엔드 개발자의 사이드 프로젝트 앱 배포 경험기입니다.(기술적 서술이 없습니다.) NextJS로 구성된 웹앱을 React Native + Expo를 사용해 안드로이드 앱으로 전환하고 배포하는 과정의 기록입니다.(기본 도메인 세팅이 완료되었고, Vercel로 배포해놓은 상태입니다.)    개발서버기존 NextJS로 구성된 프론트를 React Native로 EXPO를 통해 테스트용 APK를 만들어보기로했음.  expo-cli는 deprecated되었고, node 17v 이상과 호환성 문제가 발생할 수 있다고 합니다.프로젝트 내 자체 cli를 설치하여 사용하는 걸 권장한다고 합니다.expo build명령어도 eas build로 대체되었다고 하네요# expo cli 설치npm install expo-cl..

멜론 플레이리스트 유튜브 뮤직 재생목록으로 옮기기 with NodeJS, Selenium
삽질/사이드 프로젝트2024. 4. 14. 00:13멜론 플레이리스트 유튜브 뮤직 재생목록으로 옮기기 with NodeJS, Selenium

개발 동기 유튜브 프리미엄이야 그렇다쳐도, 멜론을 처음 스트리밍클럽에 가입했던게 2010년도 초반쯤이었다. 그때는 분명 3천원이었던걸로 기억하는데... 하기사 체감 물가가 김밥 한줄에 천원하던 시대에서 3~4천원하니 그럴만도 하다 싶지만, 돈을 좀 아껴보고자 멜론 구독을 이제 보내줄 때가 된 것 같다. 가수 - 노래제목 형태의 CSV파일로 파싱해서 soundiiz 로 유튜브 뮤직 플레이리스트를 만들어 줄 수 있다고 한다. 나는 이제 개발자이기도 하니까, 직접 해보기로했다. 오랜만에 셀레니움도 다시 써볼겸 작업을 했는데, 여전히 셀레니움으로 구글 플랫폼을 핸들링하는 데 짜증이낫다. 구글 로그인과정에서 오래 잡아먹어서 한 7~8시간정도 걸렸다. 작업물 GitHub - mag123c/from-Melon-to-..

[쿼리튜닝 - 2] 사내 조회쿼리 성능의 개선 과정 두번째 이야기
삽질/업무2024. 3. 17. 12:24[쿼리튜닝 - 2] 사내 조회쿼리 성능의 개선 과정 두번째 이야기

해당 글을 보고 오시면 좋아요  [쿼리튜닝] 신입 개발자의 간단한 사내 조회 쿼리의 쿼리튜닝 여정.발단 계속해서 짧은 주기로 프로젝트를 쏟아내고 있던 와중에 DB연산이 많은 작업을 수행하는 경우가 생겼다. 개발 단계에서 API 자체를 돌리는 과정에서도 1~2000ms가 되어 걱정하고 있던 과정에 Qmag1c.tistory.com     서론팀장님께서 나를 불렀다."집계 함수를 사용해서 요청사항 집계를 하는 SQL문이 있는데 ~~~ 성능 최적화를 좀 할 수 있을까요?" 기존 쿼리를 받아들고 돌려보았다.    기존 상태SELECT    YEAR(a.registe_time) AS year,    MONTH(a.registe_time) AS month,    a.code,    count(a.code) AS t..

728x90
728x90
image