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

학습일지 199

빠르게 정리하는 데이터베이스 (1) 기본개념, DB Structure

introduction What is SQL? (DB Management) SQL : 데이터베이스 서버가 Constructing Statements을 실행할 수 있도록 지원하는 데이터베이스용 언어. Database - 저장하고 싶은 데이터를 저장할 수 있는 공간. 정확한 정의는 "DBMS의 관리하에 놓여 있는 Persistent Data의 집합." Persistent Data : 일반적으로 컴퓨터 램에 올라간 데이터는 애플리케이션이 종료되면 사라짐. 애플리케이션이 종료되거나 컴퓨터가 꺼져도 계속 보존되는 데이터를 말함. DBMS : persistent Data가 저장된 데이터베이스를 관리하기 위한 서버. ex) MySQL. SQL을 실제로 데이터베이스에서 작동할 수 있도록 실행하며, 쿼리 최적화도 담당한..

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에 들고가서 로그인하는 방식. 보안에 취약하다. 서드파티 애플리케이션에 직접 정보를 줘야 하고 서드파티는 해당..

JIT Compiler

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

WebRTC - 개념과 통신방식, 프로토콜

WebRTC Real time Communication on Web Browsers / Mobile App을 가능하게 하는 Framework. 즉 text 형태로도, video 형태로도 가능하다는 뜻. P2P만을 말하는 건 아니다. 단순한 P2P보다 훨씬 복잡함. 크게 네 가지 step을 거쳐 동작한다. Signalling Connecting Securing Communicationing. 보통 WebRTC를 사용한 통신의 대부분이 P2P인 것뿐이다. 왜 등장했는가? WebRTC 이전에는 Server가 MiddleMan 역할을 했다. 즉, 사용자 간 통신의 모든 부하를 서버가 떠맡는 구조였다. Scalable에 한계가 있는 구조 / 유지하기 비싸다. 그럼 아예 이렇게 통신하게 하면 어떨까? 중간에 서버가..

머신러닝야학 2기 - Tensorflow 102. CNN

opentutorials.org/module/5268 Tensorflow 102 - 이미지 분류(CNN) 이 수업은 머신러닝 야학 진도에 맞춰서 공개됩니다. 공개일정은 진도표를 참고해주세요. 머신러닝 야학은 온라인으로 머신러닝을 학습하는 무료학교입니다. 머신러닝을 시작하고 싶다면 1월 opentutorials.org 데이터와 차원. 차원 (Dim)을 정의하는 두 가지 관점 '표'에서의 열 데이터의 포함 관계 데이터 공간 ('표 형태') 표에서 Column의 개수가 2개 = 2차원 평면의 한 점. 3개 = 3차원 공간의 한 점 n개 = n차원 공간의 한 점. 즉 관측치 = "N차원 공간의 한 점". 그러면 변수의 개수 (column의 개수) = 공간의 차원 수와 동일함. 데이터를 (관측치를) 차원의 한 점..

학습일지/AI 2021.01.12

Architecting with Google Compute Engine - Design Process ch4. Presentation Layer

Presentation Layer Overview Presentation Layer : 사용자와 시스템 간, business logic, stored service 간 데이터 flow를 말한다. 간단히 말해 Networking. Presentation Layer : Network Configuration Networking 에서 가장 중요시해야 할 건 Location. 이게 latency 차이를 만드는 핵심이기 때문. Distributed network일수록 outage tolerance가 강해지지만, round trip time is slower between distant elements 문제 때문에 performance limitation은 반드시 존재한다. 미국 - 유럽 간 통신은 1초당 최대 6..

Architecting with Google Compute Engine - Design Process ch3. Data Layer

Data Layer Overview Storage / retrieval of data를 다루는 영역. Storage / retrieval 영역인 database / file system뿐만 아니라 access method; SQL and API 등등을 포함한다. 하지만 transport of data는 다루지 않음. (Into, around, out of the system) transportation 부분은 presentation layer module에서 다룬다. Data Layer Design : Classifying and Characterizing Data 사용자 입장에서 중요한 건 Data integrity. Underlying tech에는 관심 없고, data loss / data corru..

Architecting with Google Compute Engine - Design Process ch2. Business Logic Layer

Business_logic Layer Design OverView Business Logic = code that implements business logic (Computer Science에서의 정의) that determines what happens to data. = processing. Ex) 비행기 티켓 예매라고 하면, 예매 인터페이스가 앱이건 키오스크건 상관없이 ‘티켓 예매’라는 데이터 처리는 동일하다. 이게 business logic. Microservices = specific kind of Service Oriented Architecture (SOA) -> leverages small, stateless processing for improving scalability and res..