본문 바로가기

[자바스크립트] 비동기 작업의 시간을 줄여보기 들어가며 본격적으로 개발을 하면서, 다양한 API를 개발하곤 합니다. 한 번은, 검색 API를 개발하면서, 응답속도가 3초 이상이 걸리는 로직이 있었습니다. 간단한 로직이었음에도 왜 3초씩이나 걸리는지 제대로 알지 못했습니다. 지금 생각해보면, 비동기에 대한 이해가 없어서 생긴 문제였습니다. 지금부터라도 비동기에 대해 더 자세히 공부해야겠다고 생각했습니다. 아래 글은 이 글을 바탕으로 작성됐습니다. await의 숨은 병목 async, await을 활용하면 비동기 처리를 동기적으로 처리하게끔 코드를 작성할 수 있습니다. 하지만, 이 과정에서 await을 마구잡이로 사용하게 된다면, 코드를 처리하는 시간이 오래 걸릴 수 있습니다. const book = await read(param); // 1000ms c..
[자바스크립트] 비동기 작업을 순서대로 처리하기 들어가며 본격적으로 개발을 하면서, 다양한 API를 개발하곤 합니다. 한 번은, 검색 API를 개발하면서, 응답속도가 3초 이상이 걸리는 로직이 있었습니다. 간단한 로직이었음에도 왜 3초씩이나 걸리는지 제대로 알지 못했습니다. 지금 생각해보면, 비동기에 대한 이해가 없어서 생긴 문제였습니다. 지금부터라도 비동기에 대해 더 자세히 공부해야겠다고 생각했습니다. 아래 글은 이 글을 바탕으로 작성됐습니다. forEach는 순차처리가 왜 안되는가? 만약 이런 질문을 받게 된다면 어떻게 답할 수 있을까요? Q. 지금 아래의 코드는 result가 1초 후 한꺼번에 10개가 출력되는데, 이걸 1초 간격으로 10번 출력되게 코드를 고쳐주세요. function test() { const promiseFunction = (..
[자바스크립트] async와 await 들어가며 저는 async, await만 쓰면 비동기가 되는 줄로만 알고 있었습니다. 그래서 async, await을 왜 써야 하는지 생각하지도 않고 무지성으로 사용하곤 했습니다. 하지만 모든 함수에 await를 쓴다면, 처리 속도가 상당히 지연될 수 있다는 것을 배우고서는 async, await을 어떻게 써야 할지에 대한 고민을 할 수 있었습니다. 그렇다면, 내가 정말 비동기에 대해 자세히 알고 있는가? 반문해봤을 때, 제대로 알지 못한다는 것을 알았습니다. 이번 기회에 이 부분을 제대로 정리해보고자 합니다. 다음 글은 캡틴 판교님의 자바스크립트 async와 await 글을 바탕으로 정리했습니다. 글에 대해 더 자세히 보고 싶으신 분은 여기를 참고해주세요. async, await란? async와 awai..
[자바스크립트] Promise 들어가며 저는 async, await만 쓰면 비동기가 되는 줄로만 알고 있었습니다. 그래서 async, await을 왜 써야 하는지 생각하지도 않고 무지성으로 사용하곤 했습니다. 하지만 모든 함수에 await를 쓴다면, 처리 속도가 상당히 지연될 수 있다는 것을 배우고서는 async, await을 어떻게 써야 할지에 대한 고민을 할 수 있었습니다. 그렇다면, 내가 정말 비동기에 대해 자세히 알고 있는가? 반문해봤을 때, 제대로 알지 못한다는 것을 알았습니다. 이번 기회에 이 부분을 제대로 정리해보고자 합니다. 다음 글은 캡틴 판교님의 자바스크립트 Promise 쉽게 이해하기 글을 바탕으로 정리했습니다. 글에 대해 더 자세히 보고 싶으신 분은 여기를 참고해주세요. Promise가 왜 필요한가요? 프로미스는..
[자바스크립트] 비동기 처리와 콜백 함수 들어가며 저는 async, await만 쓰면 비동기가 되는 줄로만 알고 있었습니다. 그래서 async, await을 왜 써야 하는지 생각하지도 않고 무지성으로 사용하곤 했습니다. 하지만 모든 함수에 await를 쓴다면, 처리 속도가 상당히 지연될 수 있다는 것을 배우고서는 async, await을 어떻게 써야 할지에 대한 고민을 할 수 있었습니다. 그렇다면, 내가 정말 비동기에 대해 자세히 알고 있는가? 반문해봤을 때, 제대로 알지 못한다는 것을 알았습니다. 이번 기회에 이 부분을 제대로 정리해보고자 합니다. 다음 글은 캡틴판교님의 자바스크립트 비동기 처리와 콜백 함수의 글을 바탕으로 정리했습니다. 글에 대해 더 자세히 보고 싶으신 분은 여기를 참고해주세요. 비동기 처리? 그게 뭔가요? 자바스크립트의 비..
[일기장] 증명사진 들어가며 삶을 계획하며 살아가는 것을 좋아합니다. 최선을 다해 오늘을 살아가고자 계획을 세우고, 오늘보다 더 나은 내일을 살기 위해 계획을 세웁니다. 계획대로 하루를 살았을 때, 하루를 온전히 잘 살았구나 하는 안도감이 들곤 하지만, 예상하지 못한 일로 인해 삶은 늘 계획대로 흘러가지 않았습니다. 계획되지 않은 일들로 하루를 보낼 때, 때로는 온전하지 못한 삶을 살았다며 자책하는 날도 있었지만, 때로는 예상하지 못한 일들로 인해 그 하루가 행복했던 날들도 있었습니다. 얼마 전 당신의 부고를 접하고, 우리가함께 했던 시간을 떠올려 봤습니다. 생각해보면, 당신과 함께 하루를 보내면 항상 예측하지 못했던 일들이 일어났지만, 덕분에 행복했습니다. 그동안 좋은 추억을 만들어줘서 고마웠다고 꼭 표현해야지 하며 마..
[자바스크립트] Node.js 이벤트 루프 들어가며 여행을 떠나보면, 언젠가 왜 이 여행을 하려 했을까 하는 생각이 들 때가 있었습니다. 공부를 할 때도 마찬가지였습니다. Node.js를 활용해서 개발을 하고 있는데, 왜 Node.js를 활용하는지 문득 궁금했습니다. Node.js의 특징, 장단점, 그리고 다른 언어와의 차이를 알아보며 Node.js에 대해 이해해야겠다고 생각했습니다. 아래의 글은 Node.js 이벤트 루프(Event Loop) 샅샅이 분석하기 글을 통해 더 자세히 살펴보실 수 있습니다. Node.js란? 흔히 Node.js를 싱글 스레드 논 블로킹이라고 합니다. Node.js는 하나의 스레드로 동작하지만 I/O 작업이 발생한 경우 이를 비동기적으로 처리할 수 있습니다. 분명 하나의 스레드는 하나의 실행 흐름만을 가지고 있고 파일..
[Web] JWT 토큰을 알아보자 들어가며 항상 프로젝트를 진행하면서, 회원가입 기능을 만들 때, JWT를 무지성으로 활용했습니다. 왜 JWT를 사용해야 하는지, JWT를 사용하면 어떤 문제가 있는지, 왜 세션은 고려하지 않았던 것인지 단 한 번도 제대로 생각해본 적 없다는 생각이 들었습니다. 기본적인 부분도 모르는 개발자라는 생각이 들었습니다. 이번 기회에 JWT는 무엇이고, 왜 JWT를 사용하는지, JWT는 안전한지, 더 나은 회원가입 방법은 무엇인지 정리해보려 합니다. 쿠키 & 세션의 장단점 JWT를 살펴보기 전, 왜 JWT를 사용하는 것인지 알아보겠습니다. JWT가 아닌, 쿠키, 세션을 활용한 인증 인가 방식을 구현한다면 구현이 상당히 명확하며, 서버에서 유저 상태 확인이 편리합니다. 또한 상대적으로 안전하며, 서버 측에서 관리하..
[자바스크립트] Node.js 논블로킹 탐구하기 들어가며 여행을 떠나보면, 언젠가 왜 이 여행을 하려 했을까 하는 생각이 들 때가 있었습니다. 공부를 할 때도 마찬가지였습니다. Node.js를 활용해서 개발을 하고 있는데, 왜 Node.js를 활용하는지 문득 궁금했습니다. Node.js의 특징, 장단점, 그리고 다른 언어와의 차이를 알아보며 Node.js에 대해 이해해야겠다고 생각했습니다. Node.js는 무엇인가? 블로킹과 논블로킹, 동기와 비동기에 대해 정리한 글에서, Node.js는 이벤트 기반, 논 블로킹 I/O 모델을 사용해서 가볍고 효율적이라고 했는데, 그러면 논 블로킹 I/O 모델을 사용한 게 왜 가볍고 효율적인 것인지를 알아보고 싶었습니다. 그럼 지금부터 왜 논 블로킹 IO가 Node.js의 특장점인지, CPU 코어의 활용을 극대화할 수..
[Web] 다중 서버에서 세션을 관리해보자 - 4 (feat Redis, Memcached) 들어가며 세션에 대해 조금씩 이해를 하고 있지만, 세션을 어떻게 활용해야 잘 활용할 수 있는 것인지에 대해 정리해보고 싶었습니다. 세션을 쓸 때 어떤 것들을 고려해야 하는지에 대해 더 늦기 전에, 기초를 쌓고 싶어서 개념을 정리해보고자 합니다. 무지를 반성하는 마음으로 이 글을 적습니다. In-memory DB 중 어떤 DB를 저장소로 사용해야 할까? 지난 시간 세션 저장소로 In-Memory Database를 사용하기로 하였습니다. 하지만, In-Memory Database에는 다양한 데이터베이스들이 존재합니다. 그렇다면 세션 객체를 저장하기 위해서 어떤 데이터베이스를 활용하면 좋을까요? 그전에 먼저 세션 객체가 어떤 형태로 구성되어 있는지부터 알아보겠습니다. 세션 객체는 어떤 형태로 구성되어 있을까?..