본문 바로가기

분류 전체보기

(144)
웹 브라우저와 스트리밍 프로토콜: RTSP vs RTMP, 그리고 RTMP 구조 웹 스트리밍 프로젝트를 진행하면서 RTMP 프로토콜 사용할려고 찾아보니 웹에서 지원하지 않는 프로토콜이라고 합니다갑자기 의문점이 들었습니다. 브라우저가 지원하는 프로토콜이 무엇인지,그리고 대표적인 미디어 스트리밍 프로토콜인 RTSP, RTMP의 차이와 구조가 궁금해질 때가 많습니다.이 글에서는 실제 프로젝트 경험을 바탕으로,웹 브라우저가 지원하는 주요 프로토콜과 RTSP/RTMP의 차이,그리고 RTMP의 내부 구조까지 한 번에 정리해봅니다. 1. 웹 브라우저가 지원하는 프로토콜은 무엇일까?웹 브라우저는 브라우저가 네이티브로 지원하며, 표준화 기구(W3C/IETF 등)에서 관리하는 것들입니다. 여기서 말하는 "지원"이란, 브라우저 엔진 자체가 직접 통신을 관리할 수 있다는 뜻입니다.주요 브라우저 표준..
실시간 스트리밍 서비스 프로젝트 RTMP 서버 기반 실시간 스트리밍 시스템 구축기실시간 방송, 어떻게 구현할까요? 요즘 라이브 스트리밍은 유튜브나 트위치만의 전유물이 아니잖아요? 팀 내부 프로젝트나 소규모 방송 플랫폼에서도 충분히 활용할 수 있어요. 그래서 이번에 우리가 만든 시스템은 복잡한 WebRTC 없이, 상대적으로 구성이 단순하면서도 확장성이 좋은 RTMP → HLS 기반 스트리밍 서버입니다.목차전체 아키텍처 개요RTMP 서버 구성: NGINX로 방송 받기FFmpeg로 RTMP → HLS 변환하기NestJS에서 HLS 스트리밍 제공자주 묻는 질문 (FAQ)구현 후 느낀 점과 개선 방향핵심 기술 요약전체 아키텍처 개요전체 흐름은 다음과 같아요. 송출자가 RTMP로 방송을 전송 → NGINX RTMP 서버가 수신 → FFmpeg로 ..
f-lab 1개월차 후기 에프랩(F-Lab) Node 트랙 1개월 후기 – 실력보다 방향이 중요한 시기벌써 에프랩(F-Lab) Node 트랙을 시작한 지 1개월이 지났습니다. 프로젝트가 본격적으로 시작되지는 않았지만, 이 시기는 그보다 더 중요한 "기초 체력 훈련" 기간이라고 말하고 싶습니다. 단순한 문법이나 기술이 아닌, 개발자로서의 관점과 사고 방식, 그리고 학습의 방향을 잡는 시간이었습니다.왜 F-Lab을 신청했는가?이전에 다양한 온라인 강의와 유튜브를 보며 혼자 개발 공부를 해왔습니다. 하지만, 점점 머릿속이 혼란스러워졌습니다.무엇부터 공부해야 할까?어떤 지식을 깊게 파야 할까?코드가 돌아가면 끝일까?이런 질문들이 꼬리에 꼬리를 물고 이어졌습니다. 그때 발견한 곳이 바로 F-Lab이었습니다. 강의가 아닌 1:1 실시간 멘..
f-lab 1주차 멘토 후기 기본기가 많이 부족하다는 걸 뼈저리게 느끼고, 그래서 f-lab 멘토링을 신청하게 되었다.처음에는 ‘1시간 강의’라고 해서 강의를 듣는 느낌일 줄 알았는데, 막상 참여해보니 그보다는 면접에 가까운 분위기였다. 단순히 지식을 전달받는 시간이 아니라, 내가 그동안 쌓아온 것들을 검증받는 시간에 가까웠다.그동안 나도 나름대로 개발 공부를 해왔다고 생각했지만… 정작 질문을 받았을 때 말문이 막혔다. 알고 있다고 착각했던 개념들이 사실은 겉핥기 수준이었고, 그 위에 개발을 얹고 있었다는 걸 깨달았을 때 정말 부끄러웠다.이 시간이 나에게 가장 크게 준 건 '내가 얼마나 얕게 알고 있었는지'를 스스로 직면하게 해줬다는 점이다.멘토링 이후로, ‘공부를 어떻게 해야 하는가’에 대해서 다시 고민하게 되었다.결론은 하나였다..
코어 자바스크립트 - 실행 컨텍스트 실행 컨텍스트란?실행 컨텍스트란, 코드가 실행되는 환경(Context) 또는 범위(Scope)를 말합니다.  좀 더 쉽게 말하자면,자바스크립트 엔진이 코드를 실행하기 위해 필요한 모든 정보를 담아두는 일종의 "실행 환경 저장소" 입니다.   실행 컨텍스트가 왜 중요할까?자바스크립트는 싱글 스레드 & 비동기 언어입니다.코드가 위에서 아래로 실행되는 동안, 어떤 변수를 쓸 수 있는지, 함수 호출 후 어디로 돌아갈지, this가 무엇을 가리키는지 등을 관리해야 하죠.이 모든 걸 체계적으로 처리하기 위해 실행 컨텍스트 스택(콜 스택) 을 사용합니다.   실행 컨텍스트의 종류종류설명전역 실행 컨텍스트코드가 시작될 때 기본으로 하나 생성되며, window 또는 global 객체가 포함됨함수 실행 컨텍스트함수가 호출..
코어 자바스크립트 데이터 타입 자바스크립트의 데이터 타입은 크게 두 가지로 나눌 수 있습니다.바로 기본형(Primitive Type) 과 참조형(Reference Type) 입니다.1. 기본형 (Primitive Type)기본형은 하나의 값만을 가지며, 변경 불가능한(immutable) 타입입니다.아래와 같은 타입들이 여기에 속합니다:number (숫자)string (문자열)boolean (불리언)nullundefinedsymbol2. 참조형 (Reference Type)참조형은 여러 값들을 묶어서 저장할 수 있으며, 변경 가능한(mutable) 타입입니다.다음과 같은 타입들이 참조형에 해당합니다:object (객체)array (배열)function (함수)Date (날짜)RegExp (정규표현식)MapWeakMapSetWeakSet..
Node.js의 주요 내장 객체 Node.js는 브라우저 환경이 아닌 런타임 환경이기 때문에, 브라우저에서 사용하는 window, document 같은 객체 대신, Node.js만의 내장 객체들이 존재합니다.  1. global – 전역 객체Node.js에서의 global은 브라우저의 window와 비슷한 개념입니다.어디서든 접근할 수 있는 전역 변수나 함수들을 포함하고 있어요. global.hello = '안녕!';console.log(hello); // 안녕! ❗ 참고: global에 선언한 값은 어디서든 접근 가능하지만, 무분별한 사용은 지양하는 것이 좋습니다 (예측 어려움).  2. console – 콘솔 출력 객체 console 객체는 로그를 출력하거나 디버깅할 때 사용합니다. 브라우저의 console과 거의 동일합니다.  c..
Node.js 모듈 시스템 완전 정복: CommonJS vs ES Modules Node.js를 사용하다 보면 require, import, module.exports, export 같은 모듈 관련 키워드들을 자주 접하게 됩니다.이 블로그에서는 Node.js에서 사용하는 두 가지 대표적인 모듈 시스템, CommonJS와 ES Modules(ESM)에 대해 개념부터 실무 적용까지 깔끔하게 정리해보겠습니다.  CommonJS란?CommonJS는 Node.js에서 기본적으로 사용되는 모듈 시스템입니다.JavaScript는 원래 모듈 개념이 없었지만, Node.js는 서버 사이드에서 코드를 모듈화하기 위해 CommonJS라는 방식을 도입했습니다.✅ 주요 특징require()로 모듈을 불러오고module.exports 또는 exports로 외부에 기능을 내보냅니다동기 방식으로 모듈을 로딩합니..
node 핵심 개념 Node.js란?2008년, 구글은 V8 엔진을 기반으로 크롬 브라우저를 출시했습니다. 당시 V8 엔진은 다른 JavaScript 엔진에 비해 매우 빠르며, 오픈소스로 공개되었기 때문에 많은 주목을 받았습니다. 속도 문제가 해결되자, V8 엔진을 기반으로 한 Node.js 프로젝트가 시작되었습니다.Node.js 공식 홈페이지에서는 Node를 다음과 같이 정의합니다:Node.js는 비동기 이벤트 기반의 JavaScript 런타임으로, 확장 가능한 네트워크 애플리케이션을 구축하도록 설계되었습니다.조금 더 나아가 Node.js의 내부 구조에 대해 간단히 살펴보겠습니다. Node.js의 내부 구조Node.js는 크게 V8 엔진, libuv, C++ 바인딩, 그리고 표준 라이브러리로 구성되어 있습니다.구조는 다음..
[AWS] 새로운 EC2에 기존에 있는 EBS 추가하는 방법 서론 : 갑자기 EC2 서버에 ssh , ssm 접속이 아무것도 안된다 이를 해결하기 위해서 ec2서버에 사용하고 있는 데이터을 새로운 ec2 서버 만들어서 데이터을 조회 할려고 합니다.1. 현재 문제가 되고 있는 ec2 서버에 볼륨을 찾아야 합니다. 왼쪽 메뉴에 "Elastic Block Store" 에서 "볼륨" 클릭합니다.오른쪽으로 스크롤 이동하면 "첨부된 리소스" 부분에서 현재 사용하고 있는 서버명이 나옵니다.오른쪽 마우스 클릭 후 "스냅샷 생성" 클릭합니다 2. 스냅샷 페이지로 이동합니다.  "스냅샷에서 볼륨 생성" 클릭합니다  볼륨 생성할때 가용 영역을 확인해주세요. 새로운 ec2에 동작할 영역으로 정해야 합니다.    3. 볼륨 페이지로 넘어가서 새로 만들어진 볼륨에 볼륨 연결합니다. 새로 ..