자바스크립트 이벤트 루프의 이해 (JavaScript Eventloop)
·
Server/Node
정의자바스크립트 이벤트 루프는 코드 실행 관리, 이벤트 수집 및 처리, 대기 중인 작업 실행을 핵심적으로 담당한다.자바스크립트는 단일 스레드 환경에서 작동하므로 한 번에 하나의 코드만 실행되며, 이벤트 루프는 이러한 실행 순서를 관리하여 비동기 프로그래밍을 가능하게 한다.예를 들어, 네트워크 요청, 파일 읽기, 타이머 등 다양한 비동기 작업이 올바른 순서로 처리되도록 도와준다.이벤트 루프 구성 요소Call Stack(콜스택) : 현재 실행 중인 함수(또는 스크립트)가 쌓이는 스택 구조Event/Task Queue(매크로 태스크 큐): setTimeout, setInterval, I/O 콜백, DOM 이벤트, 그리고 requestAnimationFrame 등의 콜백이 대기하는 큐Microtask Queue..
Javascript Promise에 대하여
·
Server/Node
Promise의 탄생 배경초기 자바스크립트에서는 비동기 처리를 위해 콜백 패턴을 사용했는데, 심각한 문제들이 발생하며 이를 해결하기 위한 과정에서 Promise가 등장하게 되었다.1. 콜백 지옥 (Callback Hell)// 콜백 지옥의 예시getUserData(userId, function(user) { getPosts(user.id, function(posts) { getComments(posts[0].id, function(comments) { getAuthor(comments[0].authorId, function(author) { // 들여쓰기가 계속 깊어지고 코드가 복잡해짐 }); }); });});// Promise를 사용한 개선된 코드getUs..
주니어 개발자로서 적어보는 2024년 직무 회고
·
회고록/회고
2024년 돌아보기벌써 2024년이 며칠 남지 않게 되었다. 작년 이맘때쯤 차가운 한강이 보이던 잠실철교를 지나 광진구로 넘어가던 겨울을 보냈었는데, 지금은 눈 쌓인 빌딩 숲을 지나 영등포로 넘어가고 있다.그렇다. 2023년 5월, 개발자로 시작했던 첫 회사를 떠나 2024년 6월 새로운 회사로 이직하게 되었다.지난 퇴사 회고에서도 남겼듯 많은 것을 배웠던 회사였지만, 돌아보면서 너무 서투르게 작업을 했다는 것을 느꼈다.조금 더 경험이 많았다면, 나뿐만 아니라 회사에도 더 좋은 영향과 성과를 낼 수 있었을 것이라는 생각이 든다. 지난 일을 돌아보면서 잘했던 것, 못했던 것 그리고 앞으로 잘하기 위해 어떤 것들을 준비해야 할지 생각해 보고 정리해 보려 한다.2년 차 주니어 개발자로서, 어떻게 발전하고 성장..
웹 API 설계 원칙을 통한 REST API 설계 패턴과 실전 사례
·
Server/ETC.
REST API 설계에 대해 고민하게 된 배경첫 개발자로서 취업 후, "API Path만 보고도 어떤 기능을 하는지 알 수 있도록 설계해야 한다."라는 말을 들었다.이를 위해 좋은 API 설계 원칙을 고민하며 여러 책을 찾아보게 되었다.그중 제임스 히긴보텀이 작성한 "웹 API 설계 원칙"이라는 책을 읽게 되어, 해당 내용을 기반으로 정리하게 되었다.후반부에 들어서며 RPC, 이벤트, 마이크로서비스에 어울리는 API 설계에 대한 내용이 작성되어 있지만,전반부에 작성된 REST API에 대한 내용만 정리하였다.API란 무엇일까?API(Application Programming Interface)의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타낸다.인터페이스는 두 애플리케이션 ..
tRPC에서의 쿠키 설정 및 안전한 클라이언트-서버 간 쿠키 관리 방법
·
Server/Node
tRPC에서 Cookie를 설정하게 된 배경최근 회사 서비스에서 국제화(i18n) 기능을 추가하게 되었다.서버 사이드에서 언어를 처리하기로 협의가 이뤄졌고, 이를 위해 서버 단에서 Redux를 사용하여 언어에 맞는 번역 데이터를 제공하는 방법을 선택하였다.이때, 서버는 사용자가 어떤 언어를 사용하고 있는지 알아야 하므로, 사용자의 언어를 판단하는 과정을 고민하게 되었다.사용자 언어 판단 방법먼저, 로그인한 유저인지 아닌지를 판단하기로 했다.로그인한 유저라면, 유저 DB에 존재하는 locale 정보를 가져와 언어를 판단하기로 했다.로그인하지 않은 유저를 위해서는 다양한 방법을 준비했다.이미 우리 서비스를 사용한 유저일 수 있으므로, 저장된 쿠키를 확인하기로 했다.쿠키가 존재하지 않는다면, HTTP 헤더에 ..
VS Code에서 Poetry 가상환경 사용하기
·
Server/Python
VS Code에서 Poetry 가상환경 사용하기1. Poetry 초기 설정VS Code에서 Poetry 가상환경을 정상적으로 인식하기 위해서는 다음 단계별 설정이 필요합니다가상환경을 프로젝트 디렉토리 내에 생성하도록 설정poetry config virtualenvs.in-project true가상환경 경로를 .venv로 지정poetry config virtualenvs.path "./.venv"의존성 설치poetry install2. 주의사항위 설정을 하지 않으면 가상환경이 시스템의 다른 위치에 생성되어 VS Code가 인식하지 못합니다.프로젝트 루트에 .venv 폴더가 생성되지 않으면 VS Code가 가상환경을 자동으로 인식할 수 없습니다.이러한 이유로 프로젝트 루트에 가상환경을 생성하고 관리하기 위해..
Provisioned와 Reserved Concurrency를 활용한 AWS Lambda 최적화
·
Server/Infra
Concurrency 구성 이유얼마 전, 회사의 웹 어플리케이션을 ECS에서 Lambda로 이전하였다. EPR 성격을 띠고 있는 서비스로, 업무 시간에만 사용하는 서비스, 사용자와 상호작용이 많이 없는 트래픽이 적은 서비스적 특성에 따른 효율성을 위해 Lambda 이전을 검토했다. 운영 환경을 이전하면서 약 400$에 달하는 금액을 절약할 수 있었고, 이전하면서 발생하는 크리티컬한 이슈도 없어서 꽤 성공적인 프로젝트였다. 큰 이슈가 없어서 인프라에 대해 신경을 끄고 살다가, 옆자리 인프라 고수분으로부터 업무 부탁을 받게 되었다.“준호님, 이거 Reserved Concurrency 설정해서 배포해 주실 수 있으실까요?” 아차, Provisioned Concurrency만 설정하고 다음에 Reserved C..
RPC의 이해와 tRPC 예제 소개
·
Server/Node
RPCRPC에 관심을 갖게 된 이유?RPC에 관심을 갖게 된 이유로는 두 가지가 존재합니다.             먼저, 회사에서 새롭게 진행하는 서비스에서 tRPC를 사용하기로 했습니다. 별도의 외부 서버를 둬서 API를 호출하는 것이 아닌, Next.js를 사용하여 백엔드 서버까지 구현하려 하고 있어요. 해당 프로젝트에 기여하려면 tRPC, 즉 RPC에 대해 어느 정도 이해가 필요하다고 생각했습니다. 또 하나는, 많은 공고에서 RPC가 많이 보이고 있기 때문이에요. 흔히 이야기하는 테크 기업들에서 필수 사항은 아니지만, 해당 기술을 사용하고 있거나 우대사항에 RPC 경험을 서술하고 있거든요.회사의 프로젝트 기술에 이해도를 높이기 위해, 많은 회사에서 사용하고 있는 기술이라는 호기심을 충족해 보기 위해..
코드플리
코드 플레이 리스트