[{"categories":"Project Class Project","description":"Class S 강의 발행 파이프라인에서 VAD, 배속, Groq Whisper로 STT 비용을 줄인 과정","keywords":"Class Project STT Whisper ffmpeg 자막 비용절감","permalink":"https://dseung001.github.io/posts/2026/08/27/class-s-stt-cost-optimization/","published":"August 27, 2026","summary":"개요 이전까지는 하루 강의치를 전부 올리면 대략 $1.2~$1.5 선으로 나왔습니다. 이 비용은 서버 비용까지 합친 게 아니라 오직 AI 비용이며, 하루에 4~5시간짜리 영상을 올리면 여기서 텍스트를 추출하고 임베딩하는 비용 전체를 나타내죠. 이 비용의 대부분은 오디오에서 텍스트를 추출하는 비용이었습니다. 매우 비싸게 지출되고 있었죠.\n","tags":"STT Whisper 비용절감","title":"Whisper STT 비용 절감하기 — VAD와 Groq API 조합 (Class Project)"},{"categories":"Project Class Project","description":"Class S 프로젝트에서 문제 생성","keywords":"Class Project 문제 생성 PublishJob","permalink":"https://dseung001.github.io/posts/2026/08/27/class-s-publish-logic-review/","published":"August 27, 2026","summary":"개요 처음 이 프로젝트를 만들 땐 단 한 명의 수강생이 있었으면 좋겠다는 생각이 들었지만, 프로젝트에 투입하는 리소스가 늘수록 좀 더 사용자의 체류 시간을 높이고 싶어졌습니다. 영상 콘텐츠를 다루면 참 좋은 게, 확장할 수 있는 기능이 참 많더군요. 이번에는 사용자에게 직접적으로 닿는 3가지 기능을 추가해봤습니다.\n","tags":"문제 생성","title":"AI로 강의 문제 자동 생성하기 (Class Project)"},{"categories":"Project Class Project","description":"Class Project 시연","keywords":"Class Project 시연","permalink":"https://dseung001.github.io/posts/2026/08/16/class-s-demo/","published":"August 16, 2026","summary":"사이드 프로젝트 Class S 사이트 주소\nOTT 서비스 구조를 직접 만들어보고 싶어서 진행한 사이드 프로젝트\n관련해서 전체 히스토리를 보고 싶으시다면, Class Project 카테고리로 가시면 됩니다.\n개요 사이드 프로젝트를 보여줄 때 직접 시연하는 걸 보여줄 수 있지만 다음과 같은 제약이 발생할 수 있죠.\n","tags":"시연","title":"Class Project 시연"},{"categories":"Project Class Project","description":"Class S에 질의응답 RAG를 붙이기 위한 방향","keywords":"Class Project RAG 질의응답 LLM 검색 증강 생성","permalink":"https://dseung001.github.io/posts/2026/08/13/class-s-qa-rag/","published":"August 13, 2026","summary":"개요 이전 하이브리드 검색에서 강의 내용을 청크로 나누고 FTS와 임베딩을 쌓아 두었습니다. 이번에는 그 인덱스를 써서, 질문에 관련 구간을 찾은 뒤 LLM이 답하게 하는 RAG를 붙이려 합니다.\n이유는 AWS에 Class S를 배포할 때 아마존 큐라는 서비스를 이용해서 모르는 부분과 배포 구조에 대해 조언을 받았는데, 굉장히 편하다는 인상을 받았고, 이 구조를 만드는 데 비용이 얼마나 발생할까? 그리고 그 비용을 최적화하는 데 어떻게 했을까?라는 의문에서 시작했습니다.\n","tags":"RAG 질의응답 LLM","title":"강의 영상에 RAG 기반 질의응답 붙이기 (Class Project)"},{"categories":"Database","description":"Postgres FTS와 pgvector 비교 정리","keywords":"PostgreSQL FTS tsvector pgvector 코사인 거리","permalink":"https://dseung001.github.io/posts/2026/08/12/postgres-fts-vector/","published":"August 12, 2026","summary":"개요 Class S를 만들었던 지난 하이브리드 검색 글에서는 텍스트를 토큰으로 나눠 검색하는 FTS 방식과, 임베딩 모델을 거쳐 수치로 표현해 비교하는 벡터 검색 방식을 사용했습니다. 전에는 이 두 방식을 로직 흐름으로 짧게 지나갔지만, 이번에는 더 면밀히 봐봅시다.\n","tags":"PostgreSQL FTS pgvector 검색","title":"FTS와 벡터 검색"},{"categories":"Project Class Project","description":"Class S 하이브리드 검색 가중치를 A/B 테스트로 검증하는 구조","keywords":"Class Project AB 테스트 검색 랭킹 Success@N TTFC SearchExperiment","permalink":"https://dseung001.github.io/posts/2026/08/11/class-s-search-ab-test/","published":"August 11, 2026","summary":"개요 이전 하이브리드 검색에서는 FTS, 벡터, 조회수를 0.45 / 0.45 / 0.10으로 섞어 순위를 매겼습니다. 그 비중은 일단 동작하게 둔 값이었고, 어떤 조합이 사용자가 원하는지 알 수 없었죠.\n실제 서비스에서는 A/B 테스트나 카나리 테스트로 이를 시험해 보기에, 이게 가능한 구조를 적용해 봤습니다.\n","tags":"AB 테스트 하이브리드 검색 랭킹 실험","title":"검색 랭킹 가중치 A/B 테스트로 검증하기 (Class Project)"},{"categories":"Project Class Project","description":"Class S 프로젝트에 하이브리드 검색 파이프라인 구현하기","keywords":"Class Project 하이브리드 검색 인덱싱 검색 영상 텍스트 추출 임베딩 SQS","permalink":"https://dseung001.github.io/posts/2026/08/07/class-s-hybrid-search/","published":"August 7, 2026","summary":"개요 처음에 강의 공유 사이트로 컨셉을 잡고 배포했던 이유에는, 동영상처럼 무거운 데이터를 다루고 싶었던 점도과 함께, 여기서 빠져나갈 갈래가 많다는 점도도 있었습니다. LLM 관련 기능을 붙이려면 콘텐츠가 필요한데, 그에 가장 잘 맞는 서비스라고 생각해 접근했습니다.\n","tags":"하이브리드 검색 인덱싱 검색 임베딩 SQS","title":"PostgreSQL로 하이브리드 검색(FTS + 벡터) 구현하기 (Class Project)"},{"categories":"Golang","description":"Channel 내부 구조를 읽고, Go 1.26 런타임에 관측 훅을 붙여 채널과 대기 경로를 확인해보기","keywords":"Golang Channel Chan 동시성 goroutine","permalink":"https://dseung001.github.io/posts/2026/07/28/go-chan-analysis/","published":"July 28, 2026","summary":"개요 이 글의 목표는 Go 채널을 사용법만 나열하는 것이 아니라, 런타임 내부 구조를 따라가며 왜 그렇게 동작하는지 이해하는 것입니다. 앞부분에서는 chan.go의 생성, 송수신, 버퍼 구조를 읽고, 뒷부분에서는 내부 스케줄 정책을 바꾸지 않은 채 관측 훅을 붙여 채널이 GMP 대기 경로와 실제 로직이 어떻게 맞닿는지 실험으로 확인합니다.\n","tags":"Go Channel Chan 동시성 runtime","title":"Go Chan 분석 \u0026 런타임 관측"},{"categories":"Project Class Project","description":"Class S 공지 기능 만들며 배운 점 정리","keywords":"Class Project SSE gevent 알림 공지 Redis","permalink":"https://dseung001.github.io/posts/2026/07/24/class-s-sse-notification/","published":"July 24, 2026","summary":"서비스 방문자 수 부트캠프 수업을 매일 녹화하고 쉬는 시간을 기준으로 영상을 나눠 업로드한 결과, 다음과 같은 트래픽이 발생했습니다. 외부 커뮤니티에 노출한 곳은 제 개인 블로그뿐이므로 블로그나 링크드인을 통해 들어온 소수의 인원과 실제로 복습을 위해 영상을 보는 몇 사람 정도가 전부일 것으로 추측했습니다.\n","tags":"SSE gevent 알림 공지","title":"SSE로 실시간 공지 알림 기능 만들기 (Class Project)"},{"categories":"Project Class Project","description":"Class s 프로젝트에 AI 썸네일 생성 기능 추가하기","keywords":"Class Project AI 썸네일 이미지 생성","permalink":"https://dseung001.github.io/posts/2026/07/06/class-s-ai-thumbnail/","published":"July 6, 2026","summary":"개요 최근 기업들의 공고를 보면 재밌는 공고가 AI 애니메이션 플랫폼 개발건이었습니다. 해당 공고와 더불어서 AI로 생성하는 것과 관련된 공고들이 많이 올라오더군요. 그래서 호기심에 현재 프로젝트에 AI를 녹일 부분이 없을까 고민하던 중 썸네일 기능에 이를 적용하기로 했습니다.\n","tags":"AI 썸네일","title":"AI 이미지 생성으로 영상 썸네일 자동화하기 (Class Project)"},{"categories":"Project Class Project","description":"Class Project 2차 회고 이후 비용 절감, 인코딩 분리, CI/CD 자동 배포까지 진행한 내용을 정리합니다.","keywords":"Class Project 회고 Retrospective 비용절감 SQS GitHub Actions","permalink":"https://dseung001.github.io/posts/2026/06/29/class-project-retrospective-3/","published":"June 29, 2026","summary":"개요 Class Project 2차 회고를 적은 지 12일 만에 진행 사항을 정리합니다. 2차 회고 마지막 Todo는 다음과 같았습니다.\n지금 당장은 배포 비용 절감이 중요합니다. 현재 EC2 온디맨드 인스턴스만으로 하루 약 $3(월 $90 전후)이 나가고 있습니다. 현재 구조에서 벗어나 Spot 인스턴스로 인코딩을 분리하고 DB를 RDS로 옮긴다고 가정하면 웹/API용 EC2 스펙을 줄일 수 있습니다. 하지만 Spot 중단 시에는 인코딩 잡 재시도가 필요하다는 점 때문에 프로세스가 복잡해지게 되고, 자연스럽게 버그가 발생할 가능성이 높아질 테니 연구가 필요합니다. 또한 현재는 원본 코덱과 관계없이 항상 transcode하도록 되어 있습니다. 이미 H.264/AAC인 영상은 -c copy로 패키징만 하도록 분기하면 인코딩 시간을 더 줄일 수 있으니 이 부분도 연구가 필요하죠. 마지막으로 도메인 붙여봐야겠군요 이번 기간에 수정의 중심은 인코딩 파이프라인 고도화와 인프라 분리였습니다. 2차까지는 단일 EC2 위에서 기능 추가와 ffmpeg 튜닝을 진행했다면, 이번에는 월 비용을 줄이는 데 집중했습니다. ※ 해당 동영상 스트리밍 사이트는 다음 주소에서 볼 수 있습니다. http://43.201.141.69\n","tags":"Retrospective","title":"Class Project 3차 회고"},{"categories":"Project Class Project","description":"Class s 프로젝트에 GitHub Actions를 적용해 자동 배포 파이프라인 적용하기","keywords":"Class Project GitHub Actions CI/CD 자동 배포 배포","permalink":"https://dseung001.github.io/posts/2026/06/26/class-project-github-actions-auto-deploy/","published":"June 26, 2026","summary":"개요 저번 글을 작성하던 중 배포 방식을 검토하다가 개선점이 보이더군요.\n현재는 수동 배포로 버전 업데이트마다 SSH(Secure Shell)로 EC2(Elastic Compute Cloud)에 접근하여 이미지를 빌드하고 실행하는 방식을 하고 있었습니다. 저번 글에서는 스팟 인스턴스를 추가함으로써 API 서버의 사양을 줄이는 것을 목표로 하고 있었는데, 이런 식으로 서버에서 이미지를 빌드한다면 필연적으로 빌드 과정을 감당할 정도의 메모리 공간이 추가로 필요하다는 점입니다.\n","tags":"GitHub Actions CI/CD 배포","title":"GitHub Actions로 자동 배포 파이프라인 구축하기 (Class Project)"},{"categories":"Project Class Project","description":"Class S 프로젝트에서 인코딩 서버를 분리해 배포하는 방법으로 비용 줄이기","keywords":"Class Project ASG SQS AWS EC2 인코딩 서버 비용절감","permalink":"https://dseung001.github.io/posts/2026/06/23/class-s-encoding-server-split-cost-saving/","published":"June 23, 2026","summary":"개요 현재까지 다음과 같이 비용이 지출되고 있습니다.\n월간 총 지출: $43.69 (6월 22일까지), 일일 3달러가 소비되고 있죠.\n","tags":"ASG AWS SQS 비용절감","title":"인코딩 서버 분리로 AWS 비용 절감하기 (Class Project)"},{"categories":"Video","description":"copy·transcode·remux 개념 정리와 ffprobe 기반 HLS 분기 처리 적용.","keywords":"FFmpeg Codec 인코딩 트랜스코딩","permalink":"https://dseung001.github.io/posts/2026/06/19/ffmpeg-codec-processing-strategy/","published":"June 19, 2026","summary":"개요 저번 회고에서 마지막에 언급했던 부분을 진행하려 합니다.\n또한 현재는 원본 코덱과 관계없이 항상 transcode하도록 되어 있습니다. 이미 H.264/AAC인 영상은 -c copy로 패키징만 하도록 분기하면 인코딩 시간을 더 줄일 수 있으니 이 부분도 연구가 필요하죠 코덱을 기준으로 재인코딩 대신 기존 스트림을 그대로 쓰고 패키징만 하면 속도가 빨라지는 점은 쉽게 납득이 갔습니다. 다만 내부적으로 어떻게 다른지, 재인코딩 없이 패키징만 하면 되는 경우는 무엇이 다른지가 궁금했습니다.\n","tags":"FFmpeg Codec 인코딩 트랜스코딩","title":"코덱 분리 개념 정리 및 적용"},{"categories":"Project Class Project","description":"Class Project 진행 사항","keywords":"Class Project 회고 Retrospective","permalink":"https://dseung001.github.io/posts/2026/06/17/class-project-retrospective-2/","published":"June 17, 2026","summary":"개요 Class Project 1차 회고를 6월 9일에 적었으니 8일 만에 진행 사항을 정리하게 되네요. 확장할 기능에 대해서 다음처럼 정리를 했죠.\n개발 예정인 기능이 아직 많습니다. 실질적으로 사용자에게 가장 큰 변화를 주는 기능을 먼저 구현할 예정입니다. - 업로드가 아닌 유튜브 링크를 통한 공유 - 자유 게시판 그 후에는 테스트와 고도화를 병행할 생각이지만, 무엇보다 비용 절감에 초점을 둘 예정이죠. 고도화에서는 아래 영역에 대해서 작업이 필요하죠. - HLS 세그먼트 다수 업로드: `.ts`마다 S3 PutObject가 늘어 요청 비용이 오르는 문제 해결 - 인코딩 서버 구현: ffmpeg를 쓰지 않고 직접 인코딩 구현해서 최적화 - 멀티파트 업로드로 바이트 단위 청크 전송을 최적화 - 디스크 문제: 로컬에 원본 파일과 인코딩 파일이 동시에 존재할 때도 괜찮은지 체크 - 배포 비용 절감의 필요 테스트 및 분석 영역 - 과부하 테스트 - 큰 파일이 들어왔을 때(GB 단위) - 보안 이슈 체크 결과적으로는 다음과 같이 정리되었습니다.\n","tags":"Retrospective","title":"Class Project 2차 회고"},{"categories":"Project Class Project","description":"Class Project HLS 인코딩 워커에서 발생한 버그 해결","keywords":"Class Project Celery Redis time limit visibility timeout","permalink":"https://dseung001.github.io/posts/2026/06/16/class-project-bug-celery-redis-time-limit/","published":"June 16, 2026","summary":"IP로 학원에 배포하며 테스트를 진행하던 중, 업로드 과정에서 다음과 같은 버그가 발생한 것을 확인했습니다. ","tags":"Celery Redis Bug","title":"Celery와 Redis Visibility Timeout 충돌 버그 해결기 (Class Project)"},{"categories":"Video","description":"FFmpeg HLS 옵션 정리.","keywords":"FFmpeg 인코딩 트랜스코딩 HLS 옵션","permalink":"https://dseung001.github.io/posts/2026/06/13/ffmpeg-options-test/","published":"June 13, 2026","summary":"FFmpeg FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created\nFFmpeg는 인간과 기계가 만들어낸 거의 모든 것을 디코딩/인코딩, 트랜스코딩, 먹스/디먹스, 스트림, 필터링 및 재생할 수 있는 선도적인 멀티미디어 프레임워크입니다.\n","tags":"FFmpeg 인코딩 트랜스코딩 HLS","title":"FFmpeg HLS 옵션 테스트"},{"categories":"Project Class Project","description":"Class Project를 진행하며 배운 점과 회고를 정리합니다.","keywords":"Class Project 회고 Retrospective","permalink":"https://dseung001.github.io/posts/2026/06/09/class-project-retrospective-1/","published":"June 9, 2026","summary":"개요 1차 MVP는 현재 학원 내에서 배포 중이며, 도메인 연결 후 공유할 예정입니다.\n슬슬 머릿속에는 있지만 말로는 정리가 안 되는 단계에 닿은 것 같아 글로 정리합니다.\nAnime Search에서의 한계 지난번에 진행했던 Anime Search Project에서 장면 검색 RAG까지 구현하며 결과적으로 마음에 들지 않았던 점은, 어디까지나 기술적 호기심 해결로 끝났다는 점이었습니다.\n","tags":"Retrospective","title":"Class Project 1차 회고"},{"categories":"RFC Video","description":"RFC 8216 HTTP Live Streaming(HLS)의 플레이리스트, 세그먼트, 적응형 비트레이트 등 핵심을 정리합니다.","keywords":"HLS RFC 8216 HTTP Live Streaming m3u8 M3U8 적응형 스트리밍","permalink":"https://dseung001.github.io/posts/2026/05/26/rfc8216-http-live-streaming/","published":"May 26, 2026","summary":"HLS and ABR HLS(HTTP Live Streaming)는 HTTP로 .m3u8, .m3u 플레이리스트와 짧은 미디어 세그먼트를 주고받으며 영상을 이어 재생하는 방식입니다. 네트워크나 기기 상황에 맞춰 ABR(Adaptive Bitrate, 적응형 비트레이트)로 화질(Variant)을 바꿔 끊김을 줄입니다.\n애플에서 개발한 HTTP 기반 스트리밍 방식으로 애플 사이트에서 가이드라인을 참고할 수도 있습니다.\n","tags":"RFC HLS RFC 8216 HTTP Live Streaming m3u8 스트리밍 미디어","title":"RFC 8216 — HTTP Live Streaming"},{"categories":"Project Anime Search","description":"애니메이션 장면을 자연어 검색해보자","keywords":"Anime Search Multimodal Embedding CLIP Shared Embedding Space Contrastive Learning Vector Search Qdrant","permalink":"https://dseung001.github.io/posts/2026/05/10/anime-search-project/","published":"May 10, 2026","summary":"1. 개요 애니메이션이나 드라마를 보실 때 내가 몇 화까지 본지는 기억이 안 나지만 특정 장면만 떠오를 때가 있습니다. 이 문제를 해결하기 위해 사용자가 원하는 장면이 나온 회차를 쉽게 찾을 수 있는 검색 시스템을 만들어 보려 합니다.\n","tags":"Anime Search Multimodal Embedding CLIP Contrastive Learning Shared Embedding Space Vector Search","title":"Anime Search Project: 자연어로 장면 검색"},{"categories":"OSTEP","description":"OSTEP Concurrency 33강 Event-based Concurrency 정리","keywords":"OSTEP Event-based Concurrency select poll Async I/O State Machine Non-blocking I/O Web Server","permalink":"https://dseung001.github.io/posts/2026/05/08/ostep-concurrency-33-event-based-concurrency/","published":"May 8, 2026","summary":"지금까지 동시성 프로그램을 스레드 기반 동시성만으로 구축하는 것이 유일한 방법인 것처럼 작성해왔습니다. 이는 당연히 전혀 사실과는 거리가 멀고, 여러 다른 스타일의 동시 프로그래밍이 있습니다.\n이 스타일은 이벤트 기반 동시성으로 알려져 있으며 node.js와 같은 서버 측 프레임워크를 포함한 현대 시스템에서 인기를 얻고 있습니다. 그 뿌리는 아래에서 논의할 C/UNIX 시스템에 있습니다.\n","tags":"OSTEP Operating Systems Concurrency Event-based Concurrency select poll Async I/O State Machine","title":"Operating Systems: Three Easy Pieces - Event-based Concurrency"},{"categories":"OSTEP","description":"OSTEP Concurrency 32강 Concurrency Bugs 정리","keywords":"OSTEP Concurrency Concurrency Bugs Race Condition Deadlock Synchronization Thread Lock","permalink":"https://dseung001.github.io/posts/2026/05/06/ostep-concurrency-32-concurrency-bugs/","published":"May 6, 2026","summary":"많은 사람들이 오랜 시간 동안 동시성 버그에 대해 시간과 노력을 들여 연구해 왔습니다. 대부분 교착 상태에 초점이 맞춰졌고, 이는 이전 장에서도 언급했듯 이번 장에서 더 깊이 다룰 것입니다.\n이번에는 하드웨어와 밀접한 설명이 많아 c로 진행합니다.\n","tags":"OSTEP Operating Systems Concurrency Concurrency Bugs Synchronization Race Condition Deadlock","title":"Operating Systems: Three Easy Pieces - Concurrency Bugs"},{"categories":"OSTEP","description":"OSTEP Concurrency 31강 Semaphores 정리","keywords":"OSTEP Concurrency Semaphore Synchronization Thread Lock","permalink":"https://dseung001.github.io/posts/2026/05/05/ostep-concurrency-31-semaphores/","published":"May 5, 2026","summary":"동시성 문제를 해결하기 위해 cv, lock을 추가했죠. 이제는 다익스트리아가 도입한 세마포어에 대해 알아봅시다.\n세마포어의 핵심은 다음과 같습니다\n원자적 정수 변수: 세마포어 값은 중단 없이 한 번에 변경되어야 합니다. 카운팅 기능: 0 또는 1만 갖는 바이너리 세마포어(뮤텍스와 유사)와 0 이상의 정수 값을 가지는 카운팅 세마포어가 있습니다. 동기화: 자원이 없으면 프로세스는 대기(block)하고, 자원이 생기면 깹니다 세마포은 동시성을 관리하는 논리적 제어장치 또는 충돌을 방지하는 메커니즘입니다.\n","tags":"OSTEP Operating Systems Concurrency Semaphore Synchronization","title":"Operating Systems: Three Easy Pieces - Semaphores"},{"categories":"OSTEP Django","description":"OSTEP Concurrency 30강 Condition Variables 정리","keywords":"OSTEP Concurrency Condition variable cv Monitor Synchronization","permalink":"https://dseung001.github.io/posts/2026/05/04/ostep-concurrency-30-condition-variables/","published":"May 4, 2026","summary":"아쉽게도 lock만으로는 동시 프로그램을 구축하는 데 제약이 있습니다. 특히 스레드가 실행을 계속하기 전에 조건이 참인지 확인을 하고 싶어하는 경우가 많은 데, 이를 해결할 때 부족한점이 보이죠.\n예를 들어 부모 스레드는 자식 스레드가 완료되었는 지 여부를 확인하고 싶을 수 있죠.(이를 join으로 부르기도 합니다.)\n","tags":"OSTEP Operating Systems Concurrency Condition variable Synchronization","title":"Operating Systems: Three Easy Pieces - Condition Variables"},{"categories":"OSTEP","description":"OSTEP Concurrency 29강 Lock-based Concurrent Data Structures 정리","keywords":"OSTEP Concurrency Lock Concurrent data structures Linked list Queue Scalability","permalink":"https://dseung001.github.io/posts/2026/05/02/ostep-concurrency-29-lock-based-concurrent-data-structures/","published":"May 2, 2026","summary":"Lock을 다음 주제로 넘어가기 전에 일반 데이터 구조에 Lock을 얹어 쓰는 방법을 다룹니다. 모든 상황에 두루 통하는 방법을 찾기 어렵기 때문에 시나리오별로 나누어 살펴봅니다.\n이번 챕터는 자료 구조라서 학습을 위해 파이썬(표준 라이브러리 threading)으로 같은 패턴을 옮겨 적습니다.\n","tags":"OSTEP Operating Systems Concurrency Lock Data structures Synchronization","title":"Operating Systems: Three Easy Pieces - Lock-based Concurrent Data Structures"},{"categories":"OSTEP","description":"OSTEP Concurrency 28강 Locks 정리","keywords":"OSTEP Concurrency Lock Mutex Spin lock Synchronization Critical section","permalink":"https://dseung001.github.io/posts/2026/04/30/ostep-concurrency-28-locks/","published":"April 30, 2026","summary":"동시성 프로그래밍에서 일련의 명령을 원자적으로 실행하고 싶지만, 단일 또는 멀티 프로세스에서 멀티 스레드 환경을 도입시 프로세서에서의 인터럽트가 발생하기 때문에 그렇게 할 수 없죠, 그래서 이장에서 Lock을 도입하여 문제를 해결합니다.\n해당 글에서도 c가 아닌 python으로 코드를 적습니다.(컨샙이나 이해부분을 위해 OSTEP를 보는 것이죠) 하지만 포인터 개념이 필요한 경우 c 코드를 참고합니다.\n","tags":"OSTEP Operating Systems Concurrency Lock Synchronization Mutex","title":"Operating Systems: Three Easy Pieces - Locks"},{"categories":"OSTEP","description":"OSTEP Concurrency 27강 Thread API 정리","keywords":"OSTEP Concurrency Thread Thread API Synchronization Process","permalink":"https://dseung001.github.io/posts/2026/04/29/ostep-concurrency-27-thread-api/","published":"April 29, 2026","summary":"교재에서는 c의 POSIX을 기반으로 진행되고 있고 Python을 공부 중이므로 Python의 threading로 해당 글을 진행합니다. threading 모듈은 OS의 저수준 스레딩 기능 위에 구축된 객체 지향 API로 Unix 계얼에서는 POSIX Thread(pthreads) 라이브러리를 기반으로 동작합니다.\nThread Creation 파이썬에서는 threading.Thread 객체를 만들어 스레드를 생성합니다. 핵심은 \u0026ldquo;어떤 함수를 어떤 인자로 실행할지\u0026quot;를 스레드 객체에 넘기고, start()로 실행을 시작하는 흐름입니다.\n","tags":"OSTEP Operating Systems Concurrency Thread Thread API Synchronization","title":"Operating Systems: Three Easy Pieces - Thread API"},{"categories":"OSTEP","description":"OSTEP Concurrency 26강 An Introduction 정리","keywords":"OSTEP Concurrency An Introduction Thread Process CPU Virtualization","permalink":"https://dseung001.github.io/posts/2026/04/28/ostep-concurrency-26-concurrency/","published":"April 28, 2026","summary":"Process vs Thread 멀티 스레드는 하나의 Program Counter(PC)만 갖는 단일 스레드와 달리 각 스레드가 자신만의 Program Counter(PC)와 스택(Stack) 을 가집니다. 이로 인해 멀티 프로세스와 달리 다음 차이점들이 발생합니다.\n※ Program Counter(PC): 다음에 실행할 명령어의 주소를 저장하는 레지스터 하나의 프로세스에 두 개의 스레드(T1, T2)가 있다고 가정해보면, T1에서 T2로 넘어갈 때 스레드 간 컨텍스트 스위치가 일어납니다. 이 과정은 프로세스 간 컨텍스트 스위치와 비슷하게 현재 실행 상태를 저장하고 다음 실행 상태를 복원한다는 점에서 유사합니다.\n","tags":"OSTEP Operating Systems Concurrency An Introduction Thread Process","title":"Operating Systems: Three Easy Pieces - Concurrency: An Introduction"},{"categories":"Django","description":"Django 6.0 Introduction 문서 흐름 정리","keywords":"Django 6.0 Django tutorial Polls app Django admin CMS","permalink":"https://dseung001.github.io/posts/2026/04/24/django-introduction-summary/","published":"April 24, 2026","summary":"서론 해당 글은 Laravel, Spring, Gin 등 다양한 프레임워크를 사용해 본 입장에서 Django를 살펴보며 정리한 메모입니다. Django 6.0 기준으로 Introduction은 다음과 같이 구성되어 있습니다.\nDjango 훑어보기 빠른 설치 가이드 장고 앱 작성하기, part 1 ~ 8 심화 튜토리얼: 재사용 가능한 앱을 만드는 법 다음에 읽을 내용 장고에 처음으로 기여하기 Django 훑어보기 튜토리얼이 아닌 제목 그대로 Django의 동작 방식에 대해 설명하고 있습니다. ","tags":"Django Python Web ORM MVT Tutorial","title":"Django 6.0 Introduction Summary"},{"categories":"RFC","description":"RFC 6749 OAuth 2.0 권한 부여 프레임워크의 핵심 흐름과 역할, 토큰을 정리합니다.","keywords":"RFC 6749 OAuth 2.0 Authorization Access Token Refresh Token","permalink":"https://dseung001.github.io/posts/2026/04/23/rfc6749-oauth2.0/","published":"April 23, 2026","summary":"OAuth OAuth 2.0은 인증(Authentication) 자체보다 권한 부여(Authorization) 를 위한 프레임워크입니다. 즉, 제3자 애플리케이션이 리소스 소유자의 비밀번호를 직접 받지 않고도, 제한된 범위(scope)의 접근 권한을 얻도록 설계되었습니다.\n네이버/카카오/구글 로그인에서 자주 보이는 흐름도 이 개념을 기반으로 하지만, \u0026ldquo;로그인(신원 확인)\u0026rdquo; 자체는 보통 OpenID Connect(OIDC) 같은 상위 프로토콜이 함께 쓰입니다.\n","tags":"RFC RFC 6749 OAuth 2.0 인증 Authorization","title":"RFC 6749 — The OAuth 2.0 Authorization Framework"},{"categories":"RFC","description":"RFC 6454의 Origin 개념과 직렬화, same-origin 정책의 판단 기준을 핵심만 정리합니다.","keywords":"RFC 6454 Origin Same-Origin Policy SOP CORS","permalink":"https://dseung001.github.io/posts/2026/04/22/rfc6454-the-web-origin-concept/","published":"April 22, 2026","summary":"서론 서버가 교차 출처 요청을 아무 기준 없이 허용하면, 민감한 응답 데이터가 의도치 않게 노출될 수 있습니다, 브라우저는 Same-Origin Policy를 기본으로 적용하고, 서버는 CORS 헤더를 통해 특정 Origin에 한해 접근을 허용하는 방식으로 이를 대응합니다.\nSame-Origin Policy: 웹 브라우저가 보안을 위해 한 출처(Origin)에서 가져온 문서나 스크립트가 다른 출처의 리소스와 상호작용하는 것을 제한하는 핵심 보안 메커니즘 CORS: 브라우저가 다른 도메인(출처)의 서버 자원에 접근할 때, 보안상 제한(동일 출처 정책, SOP)을 해제하고 합법적으로 데이터를 공유하도록 서버가 허가해 주는 HTTP 응답 헤더 기반 메커니즘 Origin의 정의와 직렬화, 그리고 HTTP Origin 헤더를 규정한 RFC 6454를 정리합니다. Origin 개념을 이해하면 다른 출처 접근이 어떤 기준으로 허용/차단되는지, 그리고 이를 통해 서버 자원을 어떻게 보호하는지 명확하게 볼 수 있습니다.\n","tags":"RFC RFC 6454 Web Origin SOP CORS 브라우저 보안","title":"RFC 6454 — The Web Origin Concept"},{"categories":"RFC","description":"HTTP/3의 QUIC 전송, 스트림·멀티플렉싱, 헤더 압축(QPACK) 등 RFC 9114 기준 핵심만 정리합니다.","keywords":"HTTP/3 RFC 9114 QUIC QPACK TLS 1.3","permalink":"https://dseung001.github.io/posts/2026/04/20/rfc9114-http3/","published":"April 20, 2026","summary":"서론 HTTP/3는 구글에서 QUIC로 개발하였고 22년 6월에 RFC 9114로 표준화되며 HTTP/3로 변경되었습니다, 참고로 HTTP/3의 기반이 되는 QUIC는 새로운 전송 프로토콜로 RFC 9000으로 표준화되었죠.\n※QUIC(Quick UDP Internet Connections): UDP 기반의 차세대 전송 프로토콜로, TCP를 쓰지 않아 TCP 수준의 HOL(head-of-line) 블로킹을 줄일 수 있음 HTTP/3의 필요성 QUIC를 사용함으로써 HTTP/2의 가장 큰 단점 몇 가지를 해결할 수 있습니다.\n","tags":"RFC HTTP/3 RFC 9114 네트워크 QUIC TLS 1.3","title":"RFC 9114 — HTTP/3"},{"categories":"RFC","description":"RFC 7540을 기준으로 HTTP/2의 바이너리 프레이밍, 스트림 멀티플렉싱, 상태 전이와 주요 고려사항을 핵심만 정리합니다.","keywords":"HTTP/2 RFC 7540 멀티플렉싱 HPACK ALPN","permalink":"https://dseung001.github.io/posts/2026/04/18/rfc7540-http2/","published":"April 18, 2026","summary":"서론 HTTP/1에서 HTTP/1.1로 업데이트되면서 많이 바뀌습니다만, 아직 남은 이슈들을 HTTP/2이 개발되었고 여기에는 프레임, 멀티플렉싱 등이 추가되었죠.\nHTTP/1 문제점들 HTTP/1에서 HTTP/1.1로 업데이트하면서 HTTP Pipelining이 추가되었지만, 이 HTTP Pipelining에서 동시성 문제가 발생했습니다. HTTP Pipelining은 HTTP/1.1에서 응답 순서 보장을 위해 사용되었는데, 이 때문에 요청이 연달아 들어오면 서버는 요청 순서대로 응답해야 하는 특징이 있어 뒤 요청은 대기 상태가 되는 문제가 생깁니다.\n","tags":"RFC HTTP/2 RFC 7540 네트워크 TLS HPACK","title":"RFC 7540 — HTTP/2"},{"categories":"Golang","description":"Go의 장점인 동시성을 타 언어들과 비교해본 글입니다.","keywords":"동시성 Concurrency 언어 철학 Parallel","permalink":"https://dseung001.github.io/posts/2025/11/15/language-concurrency-logic/","published":"November 15, 2025","summary":"개요 1-1. Go 동시성, 정말 장점일까? - 주요 언어 성능 비교 GoLang의 사용처를 묻는 질문이 들어온다면 블록체인, 게임서버, 네트워크, 실시간 데이터 처리, 고성능 API 등 중에서 아마 대답이 나올 겁니다.\n결국 고루틴(goroutine) 기반의 강력한 동시성을 GoLang의 핵심으로 보고 이를 장점으로 이야기 하는 것이죠. 이는 GoLang에 대해 공부하면 경량화된 쓰레드 자체 특징에 더해 채널, 락관리 등도 매우 편리하게 할 수 있는 걸 알고 있죠.\n","tags":"동시성 Concurrency Async Parallel","title":"언어별 동시성 로직 정리"},{"categories":"Conference","description":"GopherCon 2025를 보며 느낀 점들과 올해 회고입니다.","keywords":"GopherCon 2025 Go 고퍼콘 컨퍼런스","permalink":"https://dseung001.github.io/posts/2025/11/09/gophercon-2025/","published":"November 9, 2025","summary":"Gophercon 2025 올해 처음으로 고퍼콘에 참여하여 여러 세션을 들으며 다양한 인사이트를 얻을 수 있었습니다. 웰컴 티셔츠도 무료로 주셔서 감사한 마음으로 받고 관련 굳즈들(후드티, 뱃지, 키캡)과 스티커들을 왕창 얻을 수 있었네요.\nGophercon 2025 세션은 다음과 같았어요\n","tags":"GopherCon Golang Conference","title":"GopherCon 2025 후기 및 25년 회고"},{"categories":"Golang Database","description":"DB 커넥션 풀 고갈이 이슈가 발생했을 때 원인을 찾기 위해 접근했던 방법을 정리했습니다.","keywords":"Golang DB 커넥션 풀 Connection Pool Worker Pool Trouble shooting","permalink":"https://dseung001.github.io/posts/2025/09/25/go-db-connection-pool-troubleshooting/","published":"September 25, 2025","summary":"문제 상황 프로젝트 배경 지금 다루고 있는 서비스는 안과의사 PC에서 돌아가는 온프레미스 서비스입니다. 장비 들에서 찍은 데이터들을 토대로 의사들이 정확한 진료를 내릴 수 있도록 도와주는 온프레미스 의료 데이터 통합 웹 툴이죠. 이 서비스에서 장비와의 데이터 통신 부터 받은 데이터에 대한 파이프라인, 프론트 작업과 퍼블리싱 작업까지 넓게 맡고 있습니다.\n","tags":"Go DB Connection Pool Worker Pool Trouble shooting","title":"Go 서비스에서 DB 커넥션 풀 문제 해결기"},{"categories":"Conference","description":"GopherCon 2024에서 다뤄진 주요 세션과 인사이트를 제멋대로 짤막하게 정리해봤습니다.","keywords":"GopherCon 2024 Go 고퍼콘 컨퍼런스 발표정리","permalink":"https://dseung001.github.io/posts/2025/08/28/gophercon-2024/","published":"August 28, 2025","summary":"Go언어 프로젝트 가이드 A-Z 주된 내용 프로젝트의 크기가 Feather 단위에서 Enterprise 단위까지를 이룰 때 Application 개발을 GoLang으로 할 경우 어떻게 접근하는지에 대한 구조도\n규모에 맞춰 아래와 같이 나눠서 접근\n초기(스타트업/MVP 단계) 사용자 검증을 위한 빠른 개발에 집중 불필요한 라이브러리 최소화, 표준 라이브러리 활용 기능 단위로 간단히 구현, HandlerFunc 중심의 빠른 개발 패턴 활용 서비스 확장 단계(유니콘/중간 규모) 기능이 많아지고 의존성이 복잡해지므로 이 시기부터 패턴의 중요성 커짐 단순 HandlerFunc에서 Handler 패턴으로 전환하는 시기로 특히 상태 관리, 의존성 명확화가 필요 Handler 패턴: 구조체에 의존성을 주입할 수 있게 하고, ServeHTTP를 구현하게 해서 어디든 사용 가능하게 해서 확장성을 챙김 type PingHandler struct { DB *sql.DB } func (h *PingHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { // DB 같은 의존성 명확하게 사용 가능 w.Write([]byte(\u0026#34;pong with DB\u0026#34;)) } 기능 단위에서 서비스 단위 아키텍처로 확장 엔터프라이즈 단계 DDD(Domain-Driven Design) 적용을 통해 기능 중심에서 비즈니스 도메인 중심으로 분리 Bounded Context로 경계 정의 데이터 흐름을 확실히 나눔 API 모델과 내부 도메인 분리 (Presenter 패턴 활용) 각 레이어 분리로 테스트 용이 (Fake 구현 활용) 운영 필수 도구\n","tags":"GopherCon Golang Conference","title":"GopherCon 2024 정리"},{"categories":"Block Chain","description":"Gno.land에 대해 알아보고 메모 형태로 정리한 글입니다.","keywords":"Gno.land Cosmos 블록체인 스마트컨트랙트","permalink":"https://dseung001.github.io/posts/2025/08/25/what-is-gnoland/","published":"August 25, 2025","summary":"기본 지식 Gno.Land가 무엇인지 알기 위해서는 몇 가지 사전 지식을 알아야 이해할 수 있습니다.\n블록체인 블록체인과 암호화폐를 혼동하기 쉬운데, 블록체인은 기술이고 암호화폐는 그 기술 위에서 돌아가는 서비스입니다.\n인터넷과 이메일의 관계가 블록체인과 암호화폐의 관계와 같다고 볼 수 있죠. 이메일도 인터넷 위에서 돌아가는 서비스잖아요.\n","tags":"Block Chain Cosmos Gno.land","title":"Gno.land란?"},{"categories":"CMS","description":"CMS(Content Management System)의 기능은 가장 간단한 구조이지만 이 구조에서 사실 각각의 기능들은 엄청나게 파볼 여지가 있습니다, 그 중에 동영상 스트리밍 사이트를 기준으로 정리한 글입니다.","keywords":"CMS 기능 CMS 설계 기능 정의 웹 플랫폼 기능 파보기","permalink":"https://dseung001.github.io/posts/2025/08/01/cms-features-digging/","published":"August 1, 2025","summary":"0. 개요 CMS는 대부분의 개발자가 가장 먼저 접하는 친숙한 구조입니다. CRUD를 기반으로 한 패턴으로 어떤 기술을 배우든 자연스럽게 마주하게 되죠. 라프텔, 넷플릭스, 네이버 쇼핑, 다음 웹툰, 링크드인까지 우리가 쓰는 대부분의 서비스도 사실상 CMS의 확장 버전이라 볼 수 있습니다.\n","tags":"CMS Planning functional definition Digging","title":"CMS 기능 Digging"},{"categories":"Talk","description":"AI와 바이크 코딩 시대으로 혼란스러운 개발자 시장에서 살아남는 개발자와 회사에서 원하는 인재에 대한 내 생각이 도움이 되길 바라며 고등학교로 가서 작은 강연을 열었습니다, 만족스럽게 갔다온 후 바로 적은 후기 글입니다.","keywords":"개발자 강연 진로 교육 고등학교 강의 입학 연설 구글 IO 경쟁력 바이크 코딩 AI","permalink":"https://dseung001.github.io/posts/2025/08/01/highschool-ai-vibecoding-talk/","published":"August 1, 2025","summary":"고등학교 모교로 가게 된 이유 저번 구글 I/O 후기 글에서 나왔던 구글 I/O Exteneded를 갔다오고 문뜩 든 생각이 현업의 있는 개발자들도 AI로 고민을 하는데 개발자를 준비하는 사람들은 어떻게 고민할지가 궁금했습니다.\n이런 부분에서 학교에서 어떻게 가르치는 지도 궁금해졌고, 세미나 있던 다음 날에 바로 고등학교 선생님께 이점을 묻게 되었는습니다.\n","tags":"Lecture Career AI Vibe coding High school Seminar","title":"고등학교에서의 첫 강연: AI 시대, 개발자로 살아남기"},{"categories":"Seminar","description":"Google I/O Extended 2025 인천 행사에 참여한 이유와 인상 깊은 점, 그리고 제 생각을 정리한 글입니다.","keywords":"Google I/O AI 개발자 컨퍼런스 인천 후기 바이브 코딩","permalink":"https://dseung001.github.io/posts/2025/07/27/google-io-incheon/","published":"July 27, 2025","summary":"Google I/O Extended 이번에 개인 스터디 모임에서 알게 된 인연으로 덕분에 2025년 7월 26일 인하대에서 열린 컨퍼런스에 참여하게 되었습니다. 단체가 아닌 개인이 오프라인으로 참여한 컨퍼런스는 이번이 처음이었는데, 생각 이상으로 인사이트를 얻을 수 있고 요즘 있던 개발에 대한 가치관 확립과 동기 부여를 받을 수 있었습니다. 다른 분들에게 작게나마 도움이 되길 바라며 적은 Google IO 인천 후기입니다.\n","tags":"Review Google IO AI Developer Conference","title":"Google I/O Extended 2025 인천 후기"},{"categories":"","description":"데이터 처리 경험을 기반으로 동영상 파이프라인 도메인으로 확장 중인 개발자","keywords":"","permalink":"https://dseung001.github.io/resume/","published":"","summary":" 지승렬 / Product Developer 데이터 수집, 처리, 저장, 운영 경험을 기반으로 동영상 파이프라인 분야로 확장하기 위해 준비 중인 개발자입니다.\n","tags":"","title":"Resume"}]