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

생각정리 자세히보기

인기 글

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

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

Deploy 2024.10.10 3

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

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

Node.js (NestJS) 2024.07.25 0

[생각정리] 생각보다 쉬웠던 오픈소스 기여하기

바쁜 분들은.. 해당 이슈 => https://github.com/MasterKale/SimpleWebAuthn/issues/255 최근에 FIDO에 관련된 일로 인턴제안을 받았었다. 인턴 제안에 응해서 6월 중순부터 일을 시작하였고, 다행히 FIDO 인증에 어느정도 성과를 보여서 9월 1일자로 정규직으로 전환되었다! 최근까지 FIDO 인증을 진행하면서 겪은 좋은 경험을 공유하려고 오랜만에 글을 쓰게 되었다. FIDO? 뭔지는 정확히 모르지만 도전해보자! 처음 제안을 받았던 것은 6월초였다. 당시 이야기를 들을 때만 해도 굉장히 도전적인 일이라고 엄청 겁을 주셨다. 그도 그럴것이 회사에 FIDO를 담당하던 개발자는 이미 퇴사를 한 상황이였다. 그리고 그 개발자도 FIDO에 정확한 스펙은 모르던 것이였다...

생각정리 2022.09.03 0

최신 글

more

[내 이야기] 2023 ~ 2024 회고

23 ~ 24년 회고를 시작하며...사람이 성장하기 위해서는 필연적으로 그에 따른 성장통이 있기 마련입니다. 저에게 지난 2년의 시간은 감히 모든 방면에서의 성장을 이루기 위해 성장통을 겪은 시기였다고 생각합니다. 그래서 저의 마지막 20대를 화려하게(?) 보낼 수 있음에 감사했던 시간이였습니다. 시간 순으로 겪은 사건을 나열하면서 거기에 따른 교훈을 적어보고 25년도에는 열심히 살아보겠다는 이야기를 해보려고합니다.내가 성과라고 생각했던 것은 남들에게 성과가 아니였고 인정받지 못했다.우선, 22년도 회사를 다니면서 나름 개발자로서 어느정도의 성과를 이뤄냈다고 생각을 하였습니다. 개발을 거진 모르는 신입에 가까운 개발자가 회사의 메인 돈벌이가 될만한 보안 솔루션을 인증 통과하였고 그것이 어느정도 성과라고 ..

내 이야기 2025.01.01 0

[자료구조] 자료구조 개론

자료를 정리하는 이유효율 좋은 사람은 정리를 잘한다.일정 규칙으로 자료를 나열하는 것이 자료구조이다.구조화된 자료에서 원하는 것을 빨리 찾아내는 방법이 알고리즘이다.지저분한 방을 깨끗이 정리하는 규칙이 알고리즘이다.선형 자료구조StackLIFO 구조처음 넣은 것은 맨 아래 바닥에 깔린다. 두 번째 부터는 처음 넣은 것 위에 쌓인다.바닥에 있는 것을 꺼내려면 위에 쌓인 것들을 모두 치우는 수 밖에 없다.IO가 한곳에서 일어난다.뒤집기, 되돌아가기 등에서 사용된다.QueueFIFO 구조버스를 타기 위해 줄을 서는 것과 같다.은행에서도 비슷한 경험을 할 수 있다.IO가 앞에서 입력 뒤에서 출력이 된다.비선형 자료구조2진 트리자료당 두 개의 위치정보를 이용해 셋을 하나로 묶는다.맨 꼭대기를 기준으로 왼쪽에는 작..

자료구조 2024.12.02 0

[컴퓨터공학] 프로그래밍 개론

프로그래밍이란 절차적 글쓰기이다. 어떤 일들의 진행순서를 정하는 것이 프로그래밍이다. 즉 일하는 절차에 대한 글쓰기이다.글로 작성한 해야 할 일을 정한 순서대로 수행하는 것을 실행이라고 한다.모든 실행은 고유한 흐름을 가진다. 프로그램의 목표는 근본적으로 자동화에 있다.컴파일과 고급어, 저급어저급어는 기계어이다.기계어는 알아보기 매우 어렵고 고급어는 인간이 이해하기 쉬운 언어이다.고급어의 코드는 보통 함수 단위로 묶어 표시한다.고급어를 기계어로 바꾸는 것이 컴파일이다.컴파일을 해주는 것이 바로 컴파일러이다. C는 네이티브 언어다.컴파일이 되면 OS와 CPU에 의존적인 실행파일이 만들어진다.이렇게 컴파일을 할 경우 OS와 CPU에 의존적이면 네이티브 코드라고 부른다. Java는 네이티브와 매니지드의 특징을..

컴퓨터공학 2024.12.02 0

[운영체제] 운영체제 개론

동시성과 병렬성동시성: 여러 가지 일이 동시에 진행되는 것병렬성: 같은 일을 여러 주체가 함께 동시에 진행하는 것원자성, 동기화 그리고 교착상태동시성하면 항상 따라오는 이야기가 원자성이다.두가지 일이 동시에 자원을 선점하는 경우 기다려야하는 상황이 발생하기도 한다.이런 상황을 정리할 수 있는 동기화라는 개념이 나오게 된다. 화장실에 비유를 들어서 이야기를 하자면 화장실에 진입하면 Lock이 걸리고 화장실을 나오면 UnLock을 하게 된다.화장실을 선점하고 있는 구간이 원자성이 보장될 수 있는 구간이다. 원자성: 동시에 일이 일어나도 자원을 선점하고 있다면 그것을 보장할 수 있도록 하는것 동기화: 누군가 선점을 하고 있는 동안은 원자성을 보장할 수 있도록 하는 것 교착상태: 자원을 선점하기 위해서 서로 대..

운영체제 2024.11.26 1

[컴퓨터 구조] 컴퓨터 구조 개론

디지털회로어떻게 하면 CPU 제작할 수 있을까에 대한 이야기이다.CPU는 전자계산기이다.전자식인 이유는 효율적이고 빠르기 때문이다. AND, OR, XOR, NOT 연산에 대해서 이야기를 하려고 한다. AND는 두개 다 참일경우 참OR의 경우 둘중 하나라도 참일경우 참XOR의 경우 두개가 서로 다를때 참NOT의 경우 0이면 1로 1이면 0으로 변경 이 위의 규칙은 모두 사칙연산을 위해서 세팅이 된다…! 이걸 적용시킨게 반도체이고… 빵판이라고 부르는게 된다고 한다…!컴퓨터가 덧셈하는 방법XOR 연산과 AND 연산을 사용하여 자리올림을 진행한다.컴퓨터가 뺄셈하는 방법NOT 연산을 하고 그 수에 1을 더한 후 자리올림은 버린다. (2의 보수)컴퓨터가 곱하고 나누는 방법왼쪽으로 Shift를 하고 오른쪽 맨 끝에..

컴퓨터구조 2024.11.21 0

[컴퓨터 공학] CS를 위한 기초 상식

1비트와 디지털1비트: 전기 스위치 1개전기가 흐르면 1, 아니면 0 4비트는 16가지의 경우의 수가 있다. 16, 8, 4, 2, 1 이렇게 외우면 된다.4비트와 16진수 그리고 진법변환거의 대부분의 경우 16진수 표기를 한다. 16진수 한글자는 4비트다. 16진수에서 10으로 넘어가는 경우가 A이다. 2진수로는 1010이다. 예를 들어 F4의 경우 8비트가 된다. => 1111 010016진수 표기가 사용되는 예색상표현, 컴퓨터 하드웨어 주소 표현, 메모리 값 표현 색상표현의 경우 8비트 => 256 (0 ~ 255)외워야 할 단위 체계와 숫자8비트를 하나로 묶어 1바이트라고 한다.1바이트는 영문자 한 글자가 저장될 수 있는 메모리 크기이며 관리의 최소 단위이다. 한글은 2바이트가 필요하다. 4비트는..

컴퓨터공학 2024.11.18 2

[Node.js] Prisma VS MikroORM VS Drizzle

prisma에 대해서 어느정도 학습을 해보면서 약간 아쉬운 점들이 많았습니다. 그래서 Node.js 진영의 다른 ORM은 어떻게 하고있을까? 그 궁금함에 세 ORM을 비교하며 학습해보기로 하였습니다. 3가지 ORM의 특징특성PrismaMikroORMDrizzle ORM사용 편의성매우 직관적이고 설정이 간단하며, 빠르게 학습할 수 있음.관계 설정 및 모델링이 초기 구성이 Prisma에 비해 다소 복잡할 수 있음.API가 간단하고, 최소한의 설정으로 사용할 수 있도록 하여 사용자가 직접 필요한 부분을 확장마이그레이션 관리강력한 마이그레이션 관리 지원함. 마이그레이션 변경 사항 추적 및 자동화가 쉬움.Migration 기능이 내장되어 있으나, Prisma에 비해 설정과 관리가 복잡할 수 있음.마이그레이션 관리..

Node.js (NestJS) 2024.11.08 2

[Node.js] 413 Payload Too Large 오류 해결

안녕하세요. 이번 시간에는 413 Payload Too Large 오류를 해결해보는 시간을 가져보겠습니다. 413 Payload Too Large란?서버에서 처리할 수 있는 요청이 지정된 제한보다 큰 오류 RFC 9110부터는 Content Too Large로 오류 명이 수정됨. https://developer.mozilla.org/ko/docs/Web/HTTP/Status/413 413 Content Too Large - HTTP | MDNHTTP 413 Content Too Large 응답 상태 코드는 요청 엔터티가 서버에 의해 정의된 제한보다 크다는 것을 나타냅니다. 서버는 연결을 닫거나 Retry-After 헤더 필드를 반환할 수 있습니다.developer.mozilla.org 해결 방법우선 저는..

Node.js (NestJS) 2024.11.01 0