Programming 89

Netflix ) Netflix’s Key-Value Data Abstraction Layer

넷플릭스는 Key-Value String Data의 영속성 Layer로 어떠한것을 사용했는지, 어떤 비즈니즈 요구사항에 적용했는지 리서치 해보았다. 관련 포스팅https://netflixtechblog.com/introducing-netflixs-key-value-data-abstraction-layer-1ea8a0a11b30 Introducing Netflix’s Key-Value Data Abstraction LayerVidhya Arvind, Rajasekhar Ummadisetty, Joey Lynch, Vinay Chellanetflixtechblog.com https://netflixtechblog.com/introducing-netflix-timeseries-data-abstraction-l..

Programming/MSA 2025.01.13

(React) 기초 - 커먼 JS

커먼 JS는 모든 버전의 노드에서 지원하는 일반적인 모듈 패턴이다.(https://oreil.ly/CN-gA). 여전히 이런 방식의 모듈을 바벨이나 웹팩에서 사용할 수 있다. 커먼 JS를 사용하면 module.exports를 사용해 자바스크립트 객체를 익스포트할 수 있다.  예를들어 커먼 JS에서 print와 log 함수를 객체로 반환할 수 있다. const print(message) => log(message, new Date());const log(message, timestamp) => console.log('${timestamp.toString()}: ${message}'}; module.exports = {print, log}; 커먼 JS는 import 문을 지원하지 않는다. 그 대신, ..

(React) 기초 - ES6 모듈

자바스크립트 모듈은 다른 자바스크립트 파일에서 이름 충돌이 없이 쉽게 불러서 활용할 수 있는 재사용 가능한 코드 조각을 말한다. 자바스크립트는 모듈을 한 모듈당 하나씩 별도의 파일로 저장한다. 모듈을 만들고 외부에 익스포트 하는 방법에는 한 모듈에서 여러 자바스크립트 객체를 외부에 노출시키는 방식과 한 모듈에 하나의 자바스크립트 객체를 노출시키는 방식이 있다.  text-helper.js 파일에 있는 다음 모듈은 두 함수를 외부에 노출시킨다.export const print(message) => log(message, new Date());export const log(message, timestamp) => console.log('$(timestamp.toString()): ${message}'}; e..

(React) 기초 - 클래스

ES2015이전에는 공식적으로 자바스크립트 명세에 클래스 문법이 없었다. 클래스가 도입되면서 자바나 C++ 과 같은 전통적인 객체지향 언어와 비슷한 구문을 제공한다는 점으로 인해 흥분한 개발자들이 많았다. 과거 몇 년간은 리액트 라이브러리가 사용자 인터페이스 컴포넌트를 만들때 클래스에 주로 의존했다. 오늘날, 리액트는 점차 클래스를 멀리하기 시작했고, 함수를 사용해 컴포넌트를 구성한다. 하지만 레거시 리엑트 코드나 다른 자바 스크립트 세계에서 클래스를 자주 볼 것이다. 따라서 간단하게 클래스에 대해 살펴보자.  자바스크립트는 프로토타입을 사용한 상속라고 불리는 방법을 사용한다. 이 기법은 객체지향처럼 느껴지는 구조를 만들어내기 위한 기법이다. 예를 들어, new를 사용해 호출해야 하는 Vacation 생..

(React) 기초 - 비동기 자바스크립트

1. 단순한 프라미스와 FetchREST API에 요청을 보내는 일은 상당히 귀찮은 일이었다. REST API로 부터 간단한 데이터를 앱이 받아오려면 20 줄이 넘는 코드를 작성해야 한다. 그 후 Fetch()함수가 등장하면서 구현이 편해졌다.fetch("https://api.ramdomuser.me/?nat=US&results=1").then(res => console.log(res.json()));  then은 프라미스가 정상적으로 완료되면 콜백함수를 한번만 호출한다. 이 콜백함수가 반환하는 값은 그다음에 오는 then 함수의 콜백에 전달되는 인자가 된다. 따라서 성공적으로 처리된 프라미스를 처리하기 위해 then 함수를 연쇄적으로 호출할 수 있다. fetch("https://api.ramdomus..

(React) 기초 - 객체와 배열

객체와 배열ES2016부터 객체와 배열을 다루는 방법과 객체와 배열안에서 변수의 영역을 제한하는 방법을 다양하게 제공하기 시작했다. 이런 기능으로는 구조 분해, 객체 리터럴 개선, 스프레드 연산자 등이 있다.  구조 분해를 사용한 대입구조 분해를 사용하면 객체 안에 있는 필드 값을 원하는 변수에 대입할 수 있다. 다음 sandwich 객체를 생각해보자, sandwich에는 4개의 필드가 있다. 하지만 그중에서 bread와 meat 필드의 값이 필요하다. const sandwich = { bread: "더치 크런치", meat: "참치", cheese: "스위스", toppings: ["상추","토마토","머스타드"]};const {bread, meat} = sandwich;console...

(React) 기초 - 함수 만들기

함수 선언function logCompliment() { console.log("잘했어요!");}logCompliment(); 함수 표현식함수 표현식은 이름없는 함수를 만들며 변수에 값을 대입할 수 있다.const logCompliment = function() { console.log("잘했어요!");};logCompliment(); 함수 선언과 함수 표현식 중 어떤 쪽을 사용할지 결정할때 알아둬야 할 내용으로 함수 선언은 호이스팅되지만, 함수 표현식은 그렇지 않다는 점을 들 수 있다. 즉 함수 선언을 작성하기 전에 함수를 호출해도 된다. 하지만 함수 표현식에 의해 만들어진 함수를 함수 표현식이 실행되지 건에 호출할 수는 없다.  인수넘기기const logCompliment = function(firs..

(React) 기초 - 변수 선언하기

1. var : 일반적인 변수. 변경 가능var pizza = true;pizza = false;console.log(pizza); // false 2. const : 값을 변경할 수 없는 변수이다.  3. let : 구문적인 변수 영역 규칙 이 코드에서 if 블록안의 topic 변수를 변경하면 if 블록 밖의 topic 변수 값도 변경된다.var topic = "자바스크립트";if (topic) { var topic = "리엑트"; console.log('블록', topic); // 블록 리엑트}console.log('글로벌', topic); // 글로벌 리엑트 let 키워드를 사용하면 변수의 영역을 코드 블록 안으로 한정시킬 수 있다. let을 사용하면 블록 안에서 글로벌 변수를 보호할 수 있다..

SQL Alchemy) BEGIN ISOLATION LEVEL READ COMMITTED 이 보이면서 지연이 발생하는 현상

BEGIN ISOLATION LEVEL READ COMMITTED라는 SQL Prepare Statement가 어플리케이션에서 발생하면서, 상당시간 SQL 지연이 지속되다가 실행된다. ISOLATION이란?ISOLATION은 ACID 의 일환 (Atomicity, Consistency, Isolation, Durability)이것은 트랜젝션 온전함을 다른 유저나 시스템에게 어떻게 공유할지에 대한 것을 결정한다.낮은 ISOLATION LEVEL은 같은 데이터에 동시에 많은 유저가 다룰수 있도록 하며(동시성을 높임) 다만 동시작업으로 발생할 수 있는 부차적인 문제가 발생한다.높은 ISOLATION LEVEL은 같은 데이터에 동시성을 낮추고, 시스템 부하를 높인다.DB SERVERSIDE 뿐만아니라 CLIEN..

Programming/Python 2024.06.13

Netflix의 Cosmos Platform에 대해

원문링크https://netflixtechblog.com/the-netflix-cosmos-platform-35c14d9351ad The Netflix Cosmos PlatformOrchestrated Functions as a Microservicenetflixtechblog.com Cosmos 소개Cosmos는 마이크로서비스의 장점과 비동기식 워크플로우 및 서버리스 기능을 결합한 컴퓨팅 플랫폼입니다. 그 장점은 몇 분에서 몇 년까지 지속되는 복잡한 계층적 워크플로우를 통해 조정되는 리소스 집약적 알고리즘을 포함하는 애플리케이션입니다. 한 번에 수십만 개의 CPU를 사용하는 높은 처리량 서비스와 인간이 계산 결과를 기다리는 대기 시간에 민감한 워크로드를 모두 지원합니다. Cosmos 탄생 배경Netfl..

Programming/MSA 2024.06.09