전체 글 (66) 썸네일형 리스트형 [JWT] 토큰 인증을 제대로 설계해보자 KDT 최종 프로젝트를 진행할 때 회원 인증에 대해서 피드백을 받았을 때, 어째서 리프레시 토큰을 쿠키에 저장하는지, 액세스 토큰을 발급할 때마다 새로운 리프레시 토큰을 생성하는지에 대해서 멘토님께 설명드리지 못했습니다.그 때의 아쉬움이 남아서 같은 상황이 생기면 더 좋은 답변을 할 수 있도록 글을 작성했습니다.1. 리프레시 토큰을 사용하는 이유만약에 직원이 출입증을 잃어버렸다면 다음 절차가 이루어질 것입니다.먼저, 출입증을 재발급하고 기존에 사용하던 출입증은 정지해야 합니다.데이터베이스에 정지할 토큰을 기록하는 방법이 있지만, 이는 JWT의 이점을 흐리게 만듭니다.그래서 일반적으로 토큰의 유효기간을 짧게 설정하여 탈취당하더라도 공격자가 이용할 수 있는 시간을 제한합니다.하지만, 유효기간이 짧은 액세스 .. [WebRTC] 이용하기 쉬운 화상 채팅 경험 제공하기 국비 교육 최종 프로젝트를 진행하면서 비디오 채팅 기능을 개발했습니다.이번 글은 비디오 채팅을 구현하기 위해서 사용한 WebRTC에 대해서 정리하고자 작성하게 되었습니다.1. WebRTC란 무엇인가요?WebRTC는 웹 브라우저 간에 실시간으로 음성과 영상 통화를 가능하게 해주는 기술입니다.별도의 플러그인이나 소프트웨어 없이 브라우저끼리 데이터를 주고 받을 수 있도록 합니다. 2. WebRTC의 구성요소2-1. 시그널링 서버시그널링 서버는 브라우저의 P2P 연결을 위해 메타데이터를 교환하는 서버입니다.SDP라는 프로토콜 정보를 전달해서 미디어 형식이나 코덱 등을 협상하고, ICE 후보를 교환해서 네트워크 정보를 교환합니다.2-2. STUN 서버공유기 등의 NAT 환경에 있는 클라이언트는 일반적으로 사설 I.. [NestJS] NestJS 초보자의 입문기 이번 국비교육의 최종 프로젝트를 NestJS로 진행하게 되었습니다.NodeJS 환경에서 동작하는 프레임워크 중 Express만 사용해보았기에, 프로젝트 시작에 앞서 NestJS를 익혀보려고 합니다.1. NestJS란?NestJS는 NodeJS 환경에서 적용가능한 웹 프레임워크로 다음과 같은 특징을 가지고 있습니다.타입스크립트 지원: 코드의 안정성을 높여주고 유지보수성을 올려줍니다.모듈 아키텍처: 모듈 기반의 구조를 통하여 코드의 재사용성을 높여줍니다.유연성: Express나 Fastify를 내부적으로 사용할 수 있습니다.강력한 CLI: 프로젝트 생성과 설정 자동화를 지원합니다. 2. NestJS 설치공식 문서에 나와있는 단계를 따라하면 쉽게 애플리케이션을 생성할 수 있습니다.2-1. NestJS CLI .. [CORS] 내 요청은 왜 차단될까? 이번 달에 진행한 프로젝트를 Glitch를 이용해서 배포했습니다.한 번에 프론트와 API 연동이 되면 좋았겠지만 혼란스럽게도 CORS 에러가 발생했습니다.오늘은 CORS가 무엇이고 왜 중요한지, 그리고 이것을 어떻게 해결했는지 알아보겠습니다.1. Origin이란 무엇인가?CORS를 이해하려면 먼저 Origin의 개념부터 알아야 합니다.웹에서 Origin은 세 가지 요소로 구성됩니다.프로토콜(http, https)호스트(도메인 이름)포트 번호같은 Origin인지 판단하려면 이 세 가지가 모두 같아야 합니다.예를 들어:https://example.com:3000http://example.com:3000위 두 URL은 프로토콜이 다르기 때문에 서로 다른 Origin으로 간주됩니다. 2. CORS는 왜 사용하는.. [GitHub Actions] 코드 저장소에 CI 구성하기 지금 진행하고 있는 프로젝트에서 가장 흥미롭게 배운 기술은 깃허브 액션입니다.코드를 푸쉬할 때마다 자동으로 검사, 빌드, 배포되는 워크플로우, 신기하지 않나요?GitHub Actions깃허브 액션은 소프트웨어 개발 워크플로우를 자동화할 수 있는 강력한 도구입니다. 간단히 말해, 여러분의 깃허브 저장소에서 직접 CI/CD 파이프라인을 구축할 수 있습니다.깃허브 액션은 다음과 같은 주요 특징이 있습니다.코드 저장소 내에서 워크플로우 정의 가능YAML 파일로 쉽게 설정 가능push와 pull 등 다양한 트리거 지원 실제 적용아래는 제가 직접 프로젝트에 적용한 YAML 파일입니다.name: pr-validation# PR이 생성되거나 업데이트될 때 실행on: pull_request: branches: .. [Jenkins] CI/CD 파이프라인 소프트웨어를 수동으로 배포할 때는 여러 문제점이 있습니다.직접 하다보니 실수가 발생할 수도 있고 시간이 오래 걸리며 코드가 충돌하거나 테스트가 누락될 수도 있습니다.이런 문제들을 해결하기 위해서 CI/CD 도구를 이용할 수 있습니다.오늘은 그 중 대표적인 젠킨스를 알아보겠습니다.Jenkins젠킨스는 소프트웨어 개발 과정에서 지속적인 통합과 지속적인 배포를 지원하는 오픈소스 자동화 서버입니다.빌드, 테스트, 배포 과정을 자동화하여 워크플로우를 획기적으로 개선할 수 있습니다.젠킨스는 크게 젠킨스 마스터와 에이전트로 구분할 수 있습니다.마스터는 핵심 기능과 인터페이스를 제공하고 플러그인과 스케줄링을 관리합니다.에이전트는 실제로 빌드와 배포를 수행하는 작업자 노드로 마스터의 관리 하에 작업을 수행합니다. 파이.. [kubernetes] 컨테이너 오케스트레이션 도커를 학습하다 보니까 자연스럽게 쿠버네티스를 만나게 되었습니다.등장하는 개념이 많아서 블로그에 글로 정리하고 복습해보려고 글을 작성하였습니다.Kubernetes컨테이너화된 애플리케이션을 자동으로 배포, 스케일링, 관리해주는 오픈소스 플랫폼입니다.도커를 사용할 때 다음과 같은 의문이 드신 적이 있나요?컨테이너가 죽으면 어떻게 자동으로 재시작할까?트래픽이 많아질 때 어떻게 자동으로 스케일링 할까?새로운 버전을 무중단으로 배포할 수 없을까?여러 서버에 걸쳐있는 컨테이너들을 어떻게 관리할까?쿠버네티스는 이런 고민들을 해결할 수 있습니다. 구성 요소쿠버네티스의 클러스터는 크게 마스터 노드와 워커 노드로 그 역할이 확실히 구분되어있습니다.마스터 노드는 클러스터 전체를 제어하고 관리하는 역할을 합니다.API 서버는.. [Docker] 컨테이너 세계 입문 개발한 코드를 빌드하고 배포할 때 서버에 운영체제를 설치하고 필요한 라이브러를 다운받아 사용해서 Docker가 왜 필요한지 잘 몰랐습니다.하지만 Docker를 이번에 새로 배우면서 그 매력에 푹 빠져버렸습니다.이번 글에서는 Docker를 학습하면서 얻은 지식과 느낀 점에 대해서 공유해보려고 합니다.Docker의 개념Docker는 애플리케이션을 컨테이너라는 격리된 환경에서 실행할 수 있게 해주는 플랫폼입니다.개념만 들었을 때는 가상머신과 무엇이 다른지 의문이 들었습니다. 가상머신 vs 컨테이너가상머신의 구조를 보면하드웨어 위에 하드바이저가 있습니다.각 가상머신마다 완전한 게스트 OS가 필요합니다.OS 위에서 애플리케이션이 실행됩니다.컨테이너의 구조를 보면하드웨어 위에 호스트 OS가 존재합니다.호스트 OS .. 이전 1 2 3 4 ··· 9 다음