TodayILearned/TILWIL
-
DBMS Connection pool 이 뭐임TodayILearned/TILWIL 2022. 9. 30. 01:36
postgresql Connection pool RDBMS connection pool DBMS는 자체적으로 서버와 클라이언트를 갖고있다. (데이터를 요청하는쪽이 클라이언트, 요청을 받아 처리하는쪽이 서버.) connection pool 이란 DB의 서버-클라이언트간의 연결 객체를 의미한다. 데이터베이스 연결에 드는 비용 데이터베이스에 연결하는 것은 아래처럼 여러 단계를 거쳐야하는 리소스가 많이 필요한 작업이다. 그러나 연결을 닫지않고 열린 상태로 유지하는 것 또한 리소스를 소모한다. 애플리케이션은 연결을 하기위해 DB driver를 사용한다. 네트워크 소켓이 애플리케이션과 DB를 연결하기위해 열린다. 유저 인증됨 작업이 완료되고 연결은 닫힌다. 네트워크 소켓이 닫힌다. DB connection pool..
-
Nest CacheTodayILearned/TILWIL 2022. 9. 28. 02:29
Cache 최근에 요청된 데이터가 금방 다시 요청 될 가능성이 높을 때 캐시에 저장한다 DB에 접근하여 데이터를 가져오는 것 보다 빠름 Nest cache Nest.js에서 자체적으로 캐싱을 제공하고있다. 캐시 인터셉터에 대한 코드는 nest.js 레포지토리에서 제공하고있다. 캐싱된 데이터는 기본적으로 서버의 메모리 내에 저장된다. (로컬캐시) 로드밸런서가 요청을 분산하는 경우, 동일한 요청이 다른 노드로 이동하면서 캐시 누락이 될 수 있음 공식문서에 따르면 Nest.js의 캐시를 사용하다가 Redis와 같은 인메모리 DB로도 쉽게 마이그레이션 가능한 것 같다. Cache interceptor code @Injectable() export class CacheInterceptor implements Ne..
-
gRPC 동작순서TodayILearned/TILWIL 2022. 8. 12. 14:50
protocol buffers의 동작 순서 .proto파일에 데이터 구조를 정의한다. .proto file 생성 ProtoC compiler로 해당하는 언어로 된 PB code를 생성한다. 프로젝트 코드와 PB코드를 컴파일한다. 컴파일 된 class들이 생성된다. PB클래스를 사용해 (데이터를) 직렬화하고 역직렬화한다. .proto file에서 정의한 데이터 형식대로 데이터를 매핑 출처 : https://developers.google.com/protocol-buffers/docs/overview Overview | Protocol Buffers | Google Developers Protocol buffers provide a language-neutral, platform-neutral, extens..
-
asynchronous-synchronous programmingTodayILearned/TILWIL 2022. 5. 2. 02:31
노드의 동기, 비동기, 블로킹, 논블로킹 개념은 엄청 기본적인 상식이다. 하지만 잠깐 외웠다가도 금방 헷갈리는 개념이었는데, 동기, 비동기는 무엇과 동기되고 비동기된다는 뜻일까? 스레드*의 흐름이 공통자원의 데이터와 동기, 비동기 된다고 생각하면 될 것 같다. 동기라는 단어는 운영체제 강의에서 자주 들어본 단어이다. 운영체제에서 동기화에 대해서는 이렇게 설명한다. 공통 자원에 여러명이 동시에 접근할 때, 임계구역 문제가 발생한다. 이것을 해결하기 위해 프로세스/스레드를 동기화하는데 이 때 동기화 도구로 세마포어가 있다. 세마포어는 공통된 자원에 접근하는 여러 프로세스들을 관리하는 것인데, 예를들어 내 은행계좌(인데 천만원이 있는) 에서 A가 천만원을 빼간 후, B가 동시에 천만원을 또 출금하겠다고하면 은..
-
왜 타입스크립트 마이그레이션을 해야할까TodayILearned/TILWIL 2022. 5. 1. 22:20
왜 멀쩡히 잘 돌아가고있는 JS를 코드를 굳이 TS로 바꿔야하는가? 성능이 좋아지는건가? 개발속도가 빨라지나? 하는 의문을 가졌다. 결론적으론 성능이 좋아지는 것과는 상관이 없고 개발속도도 조금 느려질 수 있다. 하지만, 서비스가 발전할 수록, API가 많아질 수록, 나의 코드를 다른 개발자들이 작업해야하는 경우가 생긴다. 남의 코드를 읽고 이해하는것도 시간이 필요한 작업이고, 이것을 해소하는데 타입스크립트를 사용하는것이 도움이 된다고 생각했다. 타입스크립트를 처음 접했을 때, 타입이 존재함으로 인해서 장점이 생긴다는 것이 와닿지않았다. 하지만 타입스크립트를 이용해 만든 API를 다루다가 아직 마이그레이션되지 않은 API로 넘어가면서 타입스크립트의 장점을 느끼게됐다.. 있다 없으니까.. 예를들어 운송장을..
-
클래스 개념과 프로토타입 개념TodayILearned/TILWIL 2021. 12. 15. 03:39
자바스크립트는 왜 프로토타입을 선택했을까 프로토타입으로 검색하면 으레 나오는 서두처럼 저 또한 자바스크립트를 처음 접했을 때 가장 당황스러웠던 게 프로토타입이었습니다. medium.com 위 글에서 클래스, 프로토타입의 기원과 프로그래밍에서의 의미를 잘 설명해주어서 재밌게 읽었다. 클래스에 대한 문서를 여러번 읽어봐도 의의가 잘 와닿지 않았다. 왜 사용하는지? 어떤방식에서 필요한지? (함수 대신인가? 라고 생각했음) 회사 코드에 class를 이용한 코드가 있어서 어떻게 사용해야할 지 애먹기도하고.. 해서 관심있게 찾아보니 마침 회사 뉴스채널에 좋은 글이 올라와서 공유! 1. 클래스 눈앞에 실제로, 구체적으로 존재하는 사물이 있다면 반드시 그것의 본질이 존재한다 chair : 이데아에 존재하는 본질적인, ..
-
백엔드 / 프론트 분리하면서 배운 것TodayILearned/TILWIL 2021. 11. 17. 23:35
코드 작성하면서 배운점을 정리해보자 (응 내 코드) 백엔드와 프론트엔드를 분리하는 작업을 하고있다. 요즘들어 자주 드는 생각, HTML을 정말 잘 모르는구나 ^^........ 괜찮아.. 그것이 신입....인턴..... 자바스크립트를 정말 잘 모르는구나 ^^.... 괜찮아.. 그것이.. 신입...인턴.... 코드를 참 못짜는구나.. 괜찮아... 그것이... 신입....인턴.... 잊지않게 잘 정리 해 두자 타이핑 하기 전에 대략적인 그림을 그리고 코드를 짠다. 일단 짜 두고 나중에 정리하지! 라고 생각했는데 그렇게하니까 완전 스파게티 코드가 되어버렸다. 이건 뭔가 잘못된 것 같지만 멈출 수 없었는데 CTO님이 멈춰주심. 완벽하게는 아니더라도 어떤 함수가 어떻게 작동할 지, 정확한 변수명, 함수명을 사용하..
-
리프레시 토큰이 필요한가?TodayILearned/TILWIL 2021. 6. 3. 10:20
로그인이 필요한가? 오쿠 프로젝트를 시작할 때, 로그인을 도입하느냐 마느냐에 대한 이야기가 나왔다. 로그인 기능이 없다면, 클라이언트에서 보내는 요청에 대해 유저를 식별할 수 없다. (HTTP는 한번 요청과 응답을 받고나면 그 연결이 지속되지않고 끊기기 때문에) 만약 유저를 식별할 수 없다면, 오쿠 내에서 누가 입찰하였는지 정보를 식별할 수 없고, 그로인해 구매자와 판매자를 이어주려는 서비스 자체가 불가능 할 것이라고 생각했다. JWT, 쿠키-세션 로그인 JWT 로그인 방식을 채택했다. 다 장단점이 있지만 쿠키세션로그인은 쿠키 허용안하면 못쓰는거아닌가.. 리프레시 토큰이 필요한가? 리프레시토큰 리프레시 토큰은, JWT로그인 방식에 사용되는 JWT의 보안상의 단점을 보완하기 위해 구현한다. 사용자가 로그인..