100%를 한번에 바꾸는건 어려워도 1%를 100번 바꾸는건 쉽다.

생각정리 자세히보기

최신 글

more

[Deploy] Docker Image Size를 줄여 성능 개선

작은 스타트업의 특성상 백엔드 개발자가 인프라까지 만져야 하는 상황이 생깁니다. 저희 회사에서도 마찬가지로 제가 인프라를 관리하고 있는데요. 오늘은 해당 부분의 문제를 발견하여 개선이 필요하다고 판단하여 성능 개선을 한 내용을 공유드리려고 합니다. NestJS를 Docker Image로 빌드하여 배포하게 된다면 좋은 가이드 라인이 되었으면 좋겠습니다. 내가 마주했던 문제점평소부터 꾸준하게 문제점이라고 판단했던 부분이였습니다. node.js를 사용하는 이유가 보통 빠르게 개발을 진행하기 위해 사용한다고 생각하였습니다. 하지만 빌드된 Docker Image의 크기는 무려 약 909MB였습니다. Spring을 빌드한 Docker Image의 크기와 별로 다를바가 없었습니다. 이는 node.js를 사용하는 이유..

Deploy 2024.10.10 2

[Deploy] Docker란?

최근 사이드 프로젝트나 회사에서 Docker가 편리하여 자주 사용하게 되었습니다. 그냥 사용하는 것 보다는 왜 사용하는지 알기 위해서 글을 작성하며 내용을 정리하려고 합니다. 이 글은 Docker가 설치되었다는 전제하로 설명할 예정입니다! Docker란?한줄로 쉽게 요약을 하자면 Container 기반 가상화 기술입니다. Container란 소프트웨어를 실행하는 데 필요한 모든 것을 하나의 패키지로 묶어 독립적으로 실행할 수 있는 가상화 기술을 말합니다. 기존의 가상화 기술의 단점을 보완하면서 애플리케이션을 독립적으로 실행할 수 있는 환경을 제공하여 일관된 배포와 관리가 가능하게 합니다. 어떤 부분이 달라졌지?자세한 설명을 위해서 기존 가상화 기술과 Docker를 비교하면서 설명을 드리도록 하겠습니다. ..

Deploy 2024.07.29 0

[Node.js] Prisma 한방 쿼리로 성능 개선

현재 회사에서는 NestJS와 MySQL 그리고 Prisma라는 ORM의 조합으로 백엔드 개발을 하고 있습니다. 개발을 진행하면서 늘 불편하다고 느껴왔던 부분에 대한 개선이 필요하다고 판단하여 진행하게 되었습니다. 불편했던 점을 어느정도 개선할 수 있는 가이드라인이 되었으면 하는 바램에서 이 글을 작성해봅니다. 내가 마주했던 문제점기능을 추가하게 되면서 table을 하나 더 Join하게 되었고 그 과정에서 기존에는 평균 100ms의 응답속도를 가지던 API가 최소 6배, 최대 10배 정도 느려지는 현상을 발견하였습니다. 다음 사진은 Thunder Client를 사용하여 테스트한 결과입니다. 보통 API의 응답 속도가 느려지는 원인은 여러가지가 있지만 이 경우는 한번에 가져올 수 있는 쿼리를 여러번에 걸쳐..

Node.js (NestJS) 2024.07.25 0

[생각정리] 어떤 리더가 되어야 하는가? (프로젝트 회고록)

어느덧 학원에서 시작하였던 프로젝트도 마무리가 되면서 자연스럽게 회고록을 작성해야지! 라는 생각으로 글을 작성하게 되었습니다. 길다면 길고 짧다면 짧았던 1월 초부터 3월 말까지의 여정을 한번 다시 돌아보는 시간을 가져보려고 합니다. 우선 뜬금없는 이야기지만, 제 개발자 커리어의 최종 도착지는 CTO입니다. 제가 생각하는 CTO란 기술적으로 사람들을 이끌 수 있는 사람이라고 생각합니다. CTO는 기술적으로 많은 것을 아는 것도 중요하지만 사람들을 이끌 수 있는 사람이여야 합니다. 그러기 위해서는 최대한 기술적으로 많은 경험을 해보고 어느정도 사람들을 리드를 할 수 있는 환경을 경험하고 싶었습니다. 사실 초기 프로젝트를 시작하게 되면서 프로젝트의 기획을 하였고 어느순간 자연스럽게 사람들을 리드하게 되었습니..

생각정리 2024.04.02 2

[MySQL] DataBase 계정 추가, 수정

DataBase 계정을 추가해야할 일이 생겨서 추가하고 난 후 블로그로 다시 생각을 정리하게 되었습니다. MySQL을 설치했다는 전제하로 설명합니다. 추가 CREATE USER '사용자명'@'원격호스트' IDENTIFIED WITH 'mysql_native_password' BY '비밀번호'; GRANT ALL PRIVILEGES ON *.* TO '사용자명'@'원격호스트'; 수정 ALTER USER '사용자명'@'호스트명' IDENTIFIED BY '비밀번호'; FLUSH PRIVILEGES; 실 예시 root 계정의 모든 호스트에서 모든 DB와 모든 테이블의 접근을 허용한다. CREATE USER 'root'@'%' IDENTIFIED WITH 'mysql_native_password' BY '비밀번..

MySQL 2024.01.26 0

[Linux] 그룹, 계정 설정

최근에 각자 리눅스 계정을 줄 일이 생겨서 그룹 설정과 계정 설정을 진행하였습니다. groupadd 그룹을 추가하는 명령어입니다. 그룹은 GID가 생성됩니다. GID는 그룹 생성시 할당되는 ID입니다. # 그룹 추가하기 sudo groupadd {groupName} # 그룹 생성 확인하기 cat /etc/group groupdel 그룹을 삭제하는 명령어입니다. sudo groupdel {groupName} useradd 사용자를 추가하는 명령어입니다. 사용자를 추가할 때 그룹을 지정해줘야 사용자관리가 편해집니다. sudo useradd -m {username} -g {groupname} -- 옵션 -- -m : 해당 유저의 폴더를 같이 생성 -g : 그룹 지정 passwd 계정의 비밀번호를 세팅합니다. ..

Linux 2024.01.26 1

[기타] Jira와 Discord 연동

최근 팀원들을 모아 사이드 프로젝트를 시작하게 되었습니다. 전에는 Jira와 Slack을 사용하여 팀원들과 소통을 했었습니다. Slack과 Jira는 서로 연동이 잘되어 편리하였습니다. 하지만 현재 팀원들은 Discord를 사용하는 것이 더 친숙하기에 Discord를 선택하게 되었습니다. 서로 연동하기 위한 방법은 크게 두가지 방법이 있었습니다. 1. Discord에 WebHook을 설정한 다음 Jira에서 WebHook을 보내는 것. 2. Discord에 WebHook을 설정한 다음 Jira의 자동화를 사용하여 Discord의 WebHook에 요청을 보내는 것 첫번째 방법의 경우 다음과 같이 설정하였습니다. 위 사진처럼 설정하였으나, 실제 시스템에서 동작하지 않는 오류가 있었습니다. 그래서 이 방법은 ..

기타 2024.01.05 1

[Cloud] AWS와 비교해보는 NCP 후기

실습환경의 경우 NCP의 VPC 버전을 사용하지않고 Classic 버전을 사용하였습니다. Linux Server의 경우 ubuntu-18.04를 사용하였습니다. EC2 VS NCP Server AWS의 EC2와 비슷한 개념으로 NCP에도 인스턴스를 만들 수 있었습니다. 다음과 같이 구성을 진행하였습니다. 특이사항이 있었다면 보안공격을 받을 때 메일로 알림을 보내줘서 정말 좋았습니다. 친절하게 공격유형까지 설명을 해주어서 보안쪽을 한번 더 공부할 수 있었습니다. public IP AWS와 달리 맨 처음 인스턴스를 생성할 때 내부 IP만 세팅이 되고, 외부와 접속하기 위한 공인IP를 할당해줘야 합니다. 외부 네트워크와 연결할 수 있는 IP를 총 4개 할당하였습니다. RDS VS DB Server AWS의 R..

Cloud 2023.12.18 0