공부하고 기록하는, 경제학과 출신 개발자의 노트

분류 전체보기 497

gRPC (1) - gRPC의 특징 및 성능확인

Problem statement 논리적으로는 분리되어 있지만 Monolitic하게 설계된 애플리케이션이 있다고 가정하자. 내부 모듈 간 통신 속도가 빠르다는 장점 하나의 모듈에 문제가 생길 경우 애플리케이션 전체가 영향을 받음 (특정 모듈이 메모리를 과도하게 점유할 경우 시스템 전체가 죽는다던가) 그렇다보니 애플리케이션의 구조를 MicroService로 변경하려는 추세. 따라서 각각의 business / subdomain별로 별도의 시스템을 생성한 뒤 Http, Json으로 통신하는 형태의 아키텍처. Http + Json 기반 MicroService의 단점으로 생각할 수 있는 점 요청 / 응답에 걸리는 시간. 오른쪽 그림처럼, TCP 커넥션을 맺은 후에야 Request / Response를 받아올 수 있..

Learn CORS in 6 Minutes

https://youtu.be/PNtFSVU-YTI?si=P8Vwr2GH4Kj0Ku_R 예컨대 위와 같은 코드를 만들었다고 하자. 서버는 localhost:3000에서 실행되고, /data 로 들어오는 Get 요청에 정해진 값을 응답한다. 클라이언트는 localhost:5500에서 실행되고, 서버인 localhost:3000 에 요청을 보낸다. 클라이언트가 서버로 요청을 보내면 CORS 에러가 발생한다. No "Access-Control-Allow-Origin" header is present on the requested resources. In order to Allow a request to go from One Origin to Another; Tell the browser we allow tha..

OAuth2 정리

OAuth2 Open + Authorization Version 2를 의미함. Authorization Framework : 해당 사용자가 특정 행동을 할 수 있는 권한을 부여하는 것. ex) 페이스북 계정을 통한 소셜로그인 -> 로그인한 애플리케이션에서 페이스북에 등록된 정보를 사용할 수 있음. Delegated Framework : 아이디 / 패스워드 없이도 로그인이 가능하고, 사용자에게 제한된 권한만을 부여하는 식으로 작업할 수 있음. OAuth 2.0 등장 이전의 로그인방식은 아래와 같았음 어느 SNS로 로그인할지 체크 아이디 / 패스워드 입력 로그인할 애플리케이션이 이 정보를 직접 SNS에 들고가서 로그인하는 방식. 보안에 취약하다. 서드파티 애플리케이션에 직접 정보를 줘야 하고 서드파티는 해당..

Do it! 타입스크립트 프로그래밍

자바스크립트를 잘 모르는 상태에서도 타입스크립트를 맛볼 수 있는 기초 개념서. 함수형 프로그래밍, 비동기 처리, Rambda패키지와 Monad 디자인 패턴 개념을 다룬다. 실습서보다는 이론서. 리액트 웹 프로젝트 실습이 있지만, 타입스크립트 활용에 중점을 두고 있다. 이 후기는 UPF 프로그램에 참여하여, 이지스퍼블리싱의 도서지원을 받아 작성되었습니다. 주니어 자바 개발자이지만, 회사에서 자바 다음으로 자주 쓰고 있는 기술스택이 NodeJs + TypeScript이다. 자바보다 편리한 비동기 처리를 제공한다는 점, 웹 프론트엔드가 자바스크립트 기반의 React / Vue 등이 많기 때문에 특히 각광받고 있다. 취직할 때까지는 "기술스택 하나라도 제대로 알고 있다" 라고 어필하는 것이 중요했지만, 일하기 ..

세줄요약 독서 2021.05.06

화상 모의면접 연습 플랫폼 개발 프로젝트 (2) - KeyCloak 활용해서 서비스 DB에 OAuth 인증 붙이기

Yapp 동아리의 개발 프로젝트였던 화상 모의면접 연습 플랫폼 "위더뷰" 개발에 백엔드 개발자로 중도 합류했다. github.com/witherview/witherview_backend witherview/witherview_backend🎯 위더뷰 Backend. Contribute to witherview/witherview_backend development by creating an account on GitHub.github.com기본적으로는 자바 스프링부트를 사용하지만, WebRTC의 경우 Node JS를 사용하는 구조다. 프론트는 React 기반이다. 중도에 합류해서 기존 코드와 구조를 어떻게 분석했는지 / 어떻게 개선방안을 찾아갔는지 생각을 정리하는 용도의 포스트. 이 당시 서비스 백엔드는 ..

달러구트 꿈 백화점

생명체에게 “꿈”을 팔고, 꿈꾸고 나서 느낀 감정 일부를 대금으로 받는 꿈 백화점 이야기 꿈 백화점은 ‘현실을 사는 우리가 잠들었을 때 도착하는 곳’이라는 설정이지만, 현실을 사는 우리의 모습과 심경이 사실적으로 묘사되어 있어서 더 현실감 있는 판타지 “대단한 미래는 없다. 즐거운 현재와 오늘 밤의 꿈이 있을 뿐이다” 꿈. 잠들어 있는 동안, 그들의 그림자가 계속 생각하고 느낄 수 있도록 ‘시간의 신'이 만들어낸 대상. 과거에 얽매여 약해져 있는 사람에게는 용기를, 미래에만 치우쳐 과거를 잊어버리는 경솔한 사람에게는 반추할 시간을 ‘현재'를 살아가는 생명체에게 주기 위해 만들어졌다고 한다. “꿈"이라는 시간이 이 세계관에게, 저자에게 어떤 의미가 있는지는 책 주인공 ‘페니'가 달러구트 꿈 백화점의 입사면..

세줄요약 독서 2021.04.15

알랭 드 보통 - 관계

일반적인 연인관계에서 ‘사랑’의 보편적 정의를 깨부수는 책 사랑은 자연스럽게 발생하고, 운명처럼 이끌린다는 낭만주의 애정관을 부정하고 사랑하는 상대방을 이해하기 위해 공부하고 노력해야 한다는 고전주의 애정관을 설파한다. 과민반응, 집착, 삐짐, 불안함 등 특별한 관계에서 나타나는 여러 심리적 갈등요소의 원인을 심리학과 정신분석 방법으로 설명하는 책 우리는 왜, 가장 아끼고 사랑하는 사람에게 상처주고 상처받는 삶을 반복하게 될까. 누가 봐도 매력적이고 착한 사람인데, 왜 나는 다른 사람에게 끌리는 걸까. 상대를 사랑한다면 상대방의 모든 점을 수용해야만 할까. 누군가를 사랑하고, 결혼까지 했어도 외로움을 느끼거나 다른 이성이 끌리는 이유는 뭘까. 알랭 드 보통은 ‘사랑은 자연스럽게 발생하며, 마음 가는 대로..

세줄요약 독서 2021.04.02

JIT Compiler

Just in Time Compilation, and the Code Cache 자바 컴파일러가 .java -> .class 바이트코드 파일로 변경. 이 변경된 .class 파일이 JVM 위에서 실행된다. 바이트코드로 변환된 후 jvm에서 runtime에 실행되는 구조 : 어느 하드웨어에서건 동일한 실행이 가능하다. 단순히 바이트코드 변환하는 용도뿐만 아니라, 일반적인 인터프리터보다 효율적으로 동작하도록 설계되어 있음. 기본적으로 인터프리터는 코드 한 줄씩 런타임에서 읽어들여 실행하는 구조. 느린 편이다. JVM의 바이트코드 interpretation은 느린 속도를 해결하기 위해 JIT compilation (Just in time compilation) 을 사용한다. 어떤 코드가 가장 자주 실행되는지를..

시간과 장의사

“상실, 슬픔, 무력감”이라는 단어 자체를 풀어낸 듯한 책. 지금의 20대가 삶에서 느끼는 감정이 무엇인지 이해하고 싶다면, ‘90년대생이 온다'나 ‘관종의 시대'보다 훨씬 유용하다고 생각한다. 냉혹한 현실에서 삶과 죽음의 경계를 넘나들면서도, 그저 버텨내고 살아내야만 하는 불안한 20대들의 이야기 책을 읽는 게 고통스러웠던 적은 처음이다. 어렴풋이 알고 있지만 인정하고 싶지 않았던 현실을 담담히 인정하는 워딩이 고통스러웠다. 나 역시 정신과 치료를 받고 있는데, 글 곳곳에 묻어 있는 저자의 상처와 아픔이 느껴질수록 내 마음 속 통증도 되살아났다. 기댈 곳 없고 위로받을 곳 없이 어떻게든 버텨온 삶, 한때 부풀었던 꿈은 허상이고, 내가 사는 현실에 수긍해야만 하는 게 싫지만 달리 방도가 없다는 데서 오는..

세줄요약 독서 2021.02.26