| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- Express
- server
- 프론테
- gtiactions
- 코딩컨벤션
- 풀스택
- 리버스 프록시
- 백엔드
- 토큰인증
- 유저기능
- 데이터베이스
- nodeJS
- pm2
- node-cron
- CI/CD
- 권한인증
- AWS
- 개발지식
- 에러핸들링
- JWT
- typescript
- cronjob
- 기술블로그
- nextjs
- amazon web services
- 포워드 프록시
- 성능
- 자동배포
- 웹개발
- jsonwebtoken
- Today
- Total
목록분류 전체보기 (18)
생각해 보자 님의 블로그
안녕하세요. 지난 글의 이어서 이번에는 수료 후 취업 성공까지의 과정을 남겨보려고 합니다. 개발자로의 직무 전환을 결심하고 코드잇 스프린트에 참여했을 때, 기대 반 걱정 반이었습니다. 과정 자체는 체계적으로 잘 짜여 있었지만, 학습을 하며 마주한 난관도 분명 존재했어요. 특히 프론트엔드와 백엔드를 연결하면서 인증/인가 관련된 부분에서 큰 어려움을 겪었습니다.제가 구현하려던 구조는 SSR 기반의 인증 로직이었고, 인가는 브라우저 쿠키를 통해 처리하고 있었어요. 그런데 프론트와 백엔드가 각각 다른 AWS 인스턴스에서 돌아가다 보니 도메인이 달라 CORS 문제부터 시작해서 쿠키 전달이 제대로 되지 않는 상황이 발생했죠. 당시에는 꽤 막막했는데, 다행히 멘토님과 강사님들의 도움으로 문제를 풀 수 있었습니다. 핵..
안녕하세요 오늘은 기술 블로그가 아닌 제 삶에 있어 글을 남기려고 합니다.저는 비교적 늦은 나이에 개발자라는 직무로 전환을 한 사람입니다. 그 과정에서 시작점이 되었던 순간들을 기록하고자 글을 남깁니다. 음악을 전공하고, 한동안 음향감독으로 일해왔습니다. 겉으로 보기엔 멋진 직업처럼 보일 수 있지만, 실제로는 생각보다 단조롭고 권태로운 날들의 연속이었습니다. 큰 무대나 대기업 소속도 아니었고, 대부분은 반복적인 행사 중심의 작업이었습니다. 어느 순간부터 ‘내가 이 일을 계속해도 괜찮을까?’라는 물음이 마음 한켠에 자리 잡기 시작했습니다. 저는 삶에서 ‘일’이 차지하는 비중이 매우 큰 사람입니다. 어떤 직업을 갖고 어떻게 살아가느냐는 저에게 있어 삶의 방향성과도 연결된 문제였고, 그만큼 진지하게 고민해왔습..
1. 배경현재 진행하는 프로젝트에서 글로벌 에러 핸들링을 담당하는 파일이 있었습니다. 그러나 프로젝트 구조상 서비스 레이어에서 레포지토리에서 넘어온 값을 하나하나 조건문을 통해 검사를 진행하는 방식이었습니다.이러한 구조에서는 모듈이 많아질수록 함수들이 증가하게 되고, 개발 생산성에도 영향을 미칠 뿐만 아니라 추후 테스트 코드를 작성할 때 커버리지에도 영향을 줄 가능성이 있었습니다. 이를 해결하기 위해 글로벌 에러 핸들링 파일에 각 라이브러리(multer, Prisma 등)에서 발생하는 에러 타입을 확인하고 추가하는 방식을 선택했습니다.기능은 정상적으로 작동했지만, 하나의 파일에서 너무 많은 조건을 관리하게 되면서 가독성과 유지보수성이 떨어질 우려가 있었습니다. 자료를 조사하던 중 "단일 책임 원칙(Sin..
데이터베이스에서 성능을 최적화하기 위해 **인덱스(index)**를 사용하는 것은 매우 중요한 기술입니다. 인덱스는 데이터를 정렬된 상태로 저장해두어, 검색 속도를 빠르게 해주는 역할을 합니다. 하지만 인덱스를 적절하게 사용하지 않으면 성능 저하를 초래할 수 있기 때문에, 올바른 사용법을 아는 것이 중요합니다. 이번 글에서는 인덱스의 개념과 사용 시 주의할 점들을 알아보겠습니다.인덱스는 무엇일까?인덱스는 데이터베이스 테이블에서 특정 열(필드)에 대한 가상의 정렬된 데이터를 저장하는 구조입니다. 예를 들어, 책의 목차를 생각해보면, 목차를 통해 원하는 페이지를 빠르게 찾을 수 있는 것처럼, 인덱스도 특정 데이터를 더 빠르게 조회할 수 있도록 도와줍니다.일반적으로 데이터베이스는 데이터를 테이블 형식으로 저장..
배경백엔드 개발에서 성능은 매우 중요한 요소입니다. 사용자가 느끼는 서비스의 품질을 결정짓는 핵심 요소 중 하나가 바로 API 응답 속도입니다. API의 응답 속도가 느리면 사용자 경험은 물론, 전체 서비스의 신뢰성에도 큰 영향을 미칠 수 있습니다.성능 최적화 방법은 여러 가지가 있지만, 그 중에서도 데이터베이스 성능은 중요한 부분을 차지합니다. 데이터베이스가 느리면 API 응답 시간 역시 길어질 수밖에 없습니다. 그렇다면 데이터베이스 성능을 어떻게 개선할 수 있을까요? 그 중 하나가 바로 인덱싱입니다.이번 글에서는 인덱싱이란 무엇인지, 어떻게 성능을 개선할 수 있는지, 그리고 왜 인덱스를 적용해야 하는지에 대해 다뤄보겠습니다. 또한, 인덱스를 사용한 성능 개선 예시를 통해 이를 더 쉽게 이해할 수 있도..
이전 글에서 SSR 환경에서 쿠키를 활용하는 방법을 다뤘습니다. 이번 글에서는 그 연장선으로, OAuth를 활용한 소셜 로그인에서 발생한 문제와 이를 해결한 과정을 공유하려고 합니다. 특히, 쿠키의 도메인 통일이 중요한 이유와 이를 구현하는 방법을 중심으로 설명하겠습니다.배경프로젝트에서 소셜 로그인을 도입하며 OAuth 방식을 사용했습니다. 소셜 로그인은 Facebook, Google, GitHub 등의 플랫폼을 통해 사용자의 인증 정보를 받아오는 편리한 방법입니다.이전에 구현했던 로컬 회원가입 및 로그인은 Next.js 리라이트를 활용해 쿠키 도메인을 통일했기 때문에 SSR 환경에서도 잘 동작했습니다. 그러나 소셜 로그인의 특성상, OAuth 과정에서 쿠키의 도메인이 다시 백엔드로 설정되는 문제가 발생..
웹 애플리케이션을 개발하다 보면, 사용자 인증은 필수적인 요소 중 하나입니다. 최근 프로젝트를 진행하며 Next.js와 Express 서버를 통해 사용자 인증을 구현하던 중, SSR 환경에서 쿠키를 어떻게 활용해야 할지에 대해 고민하게 되었습니다. 이번 글에서는 그 과정을 공유하며, 제가 겪었던 문제와 이를 해결한 방법을 소개하려 합니다.배경제가 진행했던 프로젝트는 Next.js를 프론트엔드로, Express를 백엔드로 사용하는 구조였습니다. 사용자 인증을 위해 JWT(Json Web Token)를 활용했으며, 인증 토큰을 브라우저 쿠키에 저장하도록 설계했습니다.처음에는 브라우저 환경에서 API 호출이 잘 작동하여 문제없다고 생각했습니다. 하지만 SSR(Server-Side Rendering) 환경에서 ..
소프트웨어 개발에서는 시간이 지날수록 코드가 복잡해지고, 그에 따라 유지보수와 확장이 어려워집니다. 이럴 때 우리는 코드 리팩토링을 고려하게 됩니다. 코드 리팩토링은 단순히 코드를 수정하는 것이 아니라, 코드의 구조를 개선하고, 더 나은 유지보수성과 확장성을 확보하기 위한 중요한 작업입니다. 하지만 언제, 어떻게 리팩토링을 해야 할지, 또 어떤 기준으로 리팩토링을 진행할지에 대해 고민이 많을 것입니다. 이번 글에서는 리팩토링의 필요성과, 좋은 리팩토링을 위한 고려 사항에 대해 살펴보겠습니다.1. 리팩토링이란?리팩토링(Refactoring)은 기존의 코드에서 기능을 변경하지 않으면서 코드의 구조나 품질을 개선하는 작업을 의미합니다. 이는 코드의 가독성, 유지보수성, 재사용성을 높이는 과정으로, 새로운 기능..