1. 들어가며PHP/CodeIgniter&Laravel 중심의 환경에서 NestJS와 TypeScript 기반으로 기술 전향을 진행하고 있다. 새로운 프레임워크와 인프라 환경에 적응하던 중, AWS 환경에 배포된 컨테이너 이미지들을 대상으로 작동하는 AWS Inspector로부터 다수의 보안 취약점(Critical Vulnerability) 경고를 받았다.기존 PHP 환경의 패키지 관리(Composer)와는 또 다른 Node.js 생태계의 패키지 관리자 pnpm을 활용하여 이 문제를 해결한 과정을 정리했다.2. 왜 이 작업이 필요했는가?AWS Inspector가 감지한 경고는 단순히 권장 사항이 아닌, 시스템 전체를 위협할 수 있는 심각(Critical) 등급의 취약점(CVE)들이었다.① 악성 공격 및 ..
백엔드 설계를 하다 보면 마주하는 고민이 있다. "DB에 상태 값을 어떻게 저장할 것인가?"문자열(enum)로 저장하자니 용량이 아깝고, 숫자로만 관리하자니 가독성이 떨어집니다.현재 실무에서 활용 중인 "DB는 tinyint, Application은 Enum" 전략의 장점과 주의사항, 그리고 예외 케이스를 정리했다. 1. 구조적 특징Database: tinyint 타입을 사용하여 0~255 사이의 정수로 저장Backend (NestJS): TypeScript의 Enum을 정의하여 비즈니스 로직에 활용Frontend: API 응답 시 Enum 값을 그대로 전달하거나 필요에 따라 명칭(String)으로 변환하여 전달 2. 왜 이렇게 사용하는가? (장점)① 데이터 효율성 및 성능tinyint는 단 1바이트만 ..
스트리밍 서비스에서 동시 시청 제한은 비즈니스 모델을 지탱하는 핵심 로직이지만, 기술적으로는 상당히 까다로운 과제다. 단순히 "현재 몇 명이 보고 있는가"를 카운트하는 방식으로는 네트워크 장애나 앱 강제 종료로 발생하는 '유령 세션(Ghost Session)' 문제를 해결하기 어렵기 때문이다.기존 시스템은 DB를 통해 세션을 관리했으나, 서비스 성장에 따른 부하를 줄이기 위해 신규 서비스 구축 시 Redis를 전면 도입했다. Redis의 Set 자료구조를 중심으로 정합성과 성능을 모두 잡았던 설계 경험을 기록한다.1. 왜 Redis Set 자료구조인가?Redis의 Set은 중복을 허용하지 않고 순서가 없는 문자열의 집합이다. 이번 설계에서 Set을 선택한 이유는 단순히 숫자를 세는 것을 넘어 '실체가 있..
이 글은 아주 개인적인 견해로 사람마다 다를 수 있습니다. 판단은 본인의 몫임. 항상 서류 지원을 할 때 "학사 이상부터 지원 가능" 의 문구를 자주 접하다보니 그래, CS 공부 할겸 방통대를 들어가 학사 학위를 따자. 하고 22년도부터 방통대를 다니고 있다. 물론 휴학도 하긴 했지만 (ㅎㅎ) 퇴사 직후라서 뭔가를 시작해야할 것 같은데... 하고 이것저것 찾아보다가 게임 회사 전문 컨설팅을 진행하는 이븐아이 라는 곳을 알게 됐다. 게임 회사들은 학위를 보지 않아 고졸도, 전문대졸도, 비전공자도 가능성이 있다를 처음 알게 됐다. 굉장히 흥미롭게 다가와서 먼저 오티 같은 걸 진행한다고 했을 때 시간을 내어 참석했다. 근데 처음부터 조금 띠용했던 부분은 개발자들한테 이게 과연… 맞을까? 라는 생각이었다. 현직..
오류발생 @Get() @UseGuards(JwtAuthGuard) @ApiBearerAuth('access-token') @ApiOperation({ summary: '전체 주문 조회' }) async findAll(@Request() req) { const userId = req.user.id; return this.orderService.findAll(userId); } @Get(':id') @UseGuards(JwtAuthGuard) @ApiBearerAuth('access-token') @ApiOperation({ summary: '주문 조회' }) async findOne(@Request() req, @Param('orderId', ParseIntPipe) orde..
오류 발생 git clone을 받으려고 하는데 아래와 같이 오류가 발생한다. remote: Invalid username or password. 원인 git 설정이 풀린 문제로 토큰과 연결하면 된다. 해결방법 github 에서 토큰을 발급 받아야한다. 이미 존재한다면 2번부터 실행하면 된다. 1. github -> Settings -> Developer settings -> Personal access tokens 메뉴에서 토큰 발급 받기 2. 초기화 yungyeong@yungyeongui-MacBookAir glasstint % git init 힌트: Using 'master' as the name for the initial branch. This default branch name 힌트: is su..
작년 12월부터 DB 스터디를 하고 있는데, 오늘 흥미로운 주제가 나와서 (사실 매주 나오긴 한다 ^^;;) 찾아봤다. 바로 제목처럼 is_deleted 의 boolean 값을 저장할 건지, deleted_at 의 timestamp 값을 저장할지다. 사건의 발단(?) 당근마켓의 DB 설계를 해보자. (간단하게) 상품 테이블에 카테고리를 제외해서 설계를 했고 나를 제외한 스터디원들은 모두 created_at, updated_at, deleted_at 을 작성하지 않았다. 그래서 물어보니, 요즘 나오는 프레임워크들에선 ORM을 사용하면 기본적으로 timestamp 가 자동으로 마이그레이션 되기 때문에 염두를 하지 않았다고 했다. 관련하여 얘기를 나누다보니 모든 테이블엔 created_at, updated_a..
오류 발생프로젝트 코드 수정 후 commit - push 하려니까 push 과정에서 오류가 발생했다.% git push origin mainEnumerating objects: 1080, done.Counting objects: 100% (1080/1080), done.Delta compression using up to 10 threadsCompressing objects: 100% (554/554), done.Writing objects: 100% (561/561), 468.69 KiB | 4.99 MiB/s, done.Total 561 (delta 432), reused 4 (delta 2), pack-reused 0remote: Resolving deltas: 100% (432/432), comp..
오류 발생 package.json 에 dev 스크립트를 작성해서 npm run dev 를 작성했을 때 mongodb에 잘 연결은 됐지만 (node:17988) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead. (Use `node --trace-deprecation ...` to show where the warning was created) 이런 오류가 발생한다. 원인 Node.js의 최신 버전에서 punycode 모듈은 삭제되었다는 뜻으로 이 punycode 를 지원해주는 버전으로 다운그레이드 해야한다. 해결방법 난 노드 버전 중 가장 안정적이라고 하는 18..
오류 발생 yarn 을 설치하고 yarn 을 통해 nestjs/cli 를 설치하려고 했는데 찾지 못하는 문제 발생 % yarn global add @nestjs/cli yarn global v1.22.21 warning package.json: No license field [1/4] 🔍 Resolving packages... [2/4] 🚚 Fetching packages... [3/4] 🔗 Linking dependencies... [4/4] 🔨 Building fresh packages... success Installed "@nestjs/cli@10.3.0" with binaries: - nest ✨ Done in 0.80s. % nest new simple-board zsh: command not..
- Total
- Today
- Yesterday
- php
- Spring
- RDS
- AWS
- javascriptalgorithm
- homebrew
- phpstorm
- IntelliJ말고spring
- http
- html태그
- awsinspector
- IntelliJ
- javascript알고리즘
- algorithm
- nestjs
- 라라벨
- 알고리즘
- Git
- 인프런스프링mvc
- 우아한형제spring
- node
- 인프런spring
- 프로그래머스알고리즘
- MAC
- M1
- 프로그래머스
- Sts
- 김영한spring
- 프로그래머스코딩테스트
- laravel
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |