분류 전체보기

    AWS CloudFront 란?

    AWS CloudFront 란 AWS 에서 제공하는 CDN (Content Delivery Network) 이다. 웹페이지, 비디오, 이미지, 파일 등을 빠르고 안정적으로 전달한다. 지리학적으로 가장 가까운 위치의 서버에 컨텐츠를 캐싱해두고 제공한다. 최초에는 S3 버킷이나, EC2 인스턴스에서 가져온다. 보통의 CDN 처럼, SSL/TLS 암호화, 액세스 제어 등의 기능을 가진다. CloudFront 를 사용할 때 유의할 점 기본 설정 중 HTTP 응답을 통째로 캐시하는 정책이 있다. 이 경우 사용자의 인증 토큰까지 캐싱되는 경우가 있으니 주의해야 한다. 리디(RIDI) 의 경우 이러한 이유로 장애가 발생했다.

    CDN (Content Delivery Network) 이란?

    CDN (Content Delivery Network) 이란? Content Delivery Network 를 말한다. 콘텐츠 전송 네트워크를 말한다. 전세계 다양한 장소에 걸친 분산된 서버 네트워크이다. 최종 사용자들에게 더 빠르고, 안정성있고, 향상된 퍼포먼스를 제공하기 위해 디자인되었다. CDN 의 장점 빠르다 사용자와 지리학적으로 가장 가까운 서버에서 콘텐츠를 전송해줘서 통신지연이 적고 빠르다. 자주 접근되는 컨텐츠에 대한 캐싱을 제공하여 퍼포먼스를 향상시킬 수 있다. 이는 origin 서버에 요청 때문에 생기는 부하를 줄여주기도 한다. 안정성과 신뢰성 다중화된 서버로 컨텐츠를 분산하여 단일 서버일 때보다 컨텐츠를 안정적으로 전달해준다. 로드 밸런싱, 장애 극복(fail over), 이중화 등의 ..

    Java Stream API 에서 평가 (evaluation) 란?

    스트림에서 평가(evaluation) 란? 스트림에서 종종 평가(evaluation) 라는 용어를 사용한다. 평가는 병렬 처리가 가능한 Stream 형태에서 Stream 이 아닌 다른 형태의 자바 객체로 바꾸는 행위를 말한다. toArray(), collect(), reduce(), forEach() 같이 Stream 타입이 아닌 자바 객체로 변환하고 이를 반환하는 것을 말한다. Stream 은 평가 전에는 계속 스트림 형태를 유지한다. findFirst(), anyMatch(), allMatch() 또한 평가(evaluation) 를 트리깅할 수 있다. 하지만, 오직 단락 조건 (short-circuiting condition) 이 맞을 때만 가능하다. 단락 조건 (short-circuiting con..

    모던 자바스크립트, 모듈 3 - 트리 셰이킹과 번들링

    트리 셰이킹이란? 모듈에서 사용되지 않는 데드 코드 제거(dead code elimination) 의 한 형태이다. 나무를 세게 흔들면 죽은 가지만 바닥으로 떨어지는 이미지에서 용어를 차용해왔다. 정적 분석을 통해서 모듈에서 불러온 어떤 요소들이 현재 사용되지 않는지 알 수 있다. 이 사용되지 않는 코드는 추후 번들링에 의해서 사라지게 될 것이다. 동적 임포트와 트리 셰이킹 동적 임포트인 import() 를 한번만 사용하더라도 번들러는 트리 셰이킹을 수행하기 어려워진다. 정적 분석이 불가능하기 때문에 런타임에서야 어떤 코드를 지워도 되는지 알 수 있기 때문이다. 번들링 번들링은 예전엔 구형 브라우저에도 신형 코드가 호환될 수 있도록 하는 목적으로 많이 사용했다. 번들링을 통해 트리 셰이킹도 가능하다. 번..

    모던 자바스크립트, 모듈 2 - 모듈의 동작 방식

    모던 자바스크립트, 모듈 2 - 모듈의 동작 방식

    모듈 소개 모듈이 있기 전까진 와 같은 태그를 통해 모든 스크립트를 불러왔다. 이러한 방식은 이름 충돌, 복잡한 종속성, 파일 크기 문제 등의 이슈를 불러오게 되었다. 모듈이 있기 전의 해법 모듈이 있기 전에도 글로벌 영역을 더럽히지 않기 위해 네임스페이스를 나누고자 하는 여러 노력이 있었다. 네임스페이스 객체 이용하기 이런 객체를 선언하거나 이런 객체를 반환함으로써 스코프를 나눴다. var MyNamespace = { someVariable: "value", someFunction: function () { // function code here }, }; IIFE 이용하기 덩치가 큰 함수 하나를 즉시 실행시켜 이용하는 방식이다. (function () { var privateVariable = "se..

    모던 자바스크립트, 모듈 1 - import 와 export 방식

    명명된 이름으로 모듈화하기 (named export, named import) 이름을 지어 export 하고 그 이름을 받아 import 하는 방식이다. 모듈을 만들었을 때 변화에 가장 유연하기에 가장 선호되어야 하는 방식이다. 모듈 배포 후 여기저기서 의존한 이후에도 업데이트하는 것이 상대적으로 자유롭다. 네임드 익스포트 혹은 명명된 익스포트 (named export) 변수, 함수, 클래스 등을 내보낼 수 있다. as 를 이용해 별칭으로 내보내는 것도 가능하다. 이를 이용해 {... as default} 로 기본 익스포트를 만들 수는 있지만 추천되는 방법이 아니다. export { a, b } 혹은 import {a, b} from "/abc.js" 는 디스트럭처링 처럼 생겼지만 전혀 아니다. // 내..

    프로그래밍 언어에서 말하는 의미론 (Semantics, 시멘틱) 이란?

    의미론 (Semantics)이란? 프로그래밍을 배우기 어렵게 만드는 용어 중 하나이다. 영어로는 semantics 로 불린다. 어떤 요소를 어떠한 위치에 두어야 하는가가 아니라 어떤 요소를 어떠한 위치에 두면 어떤 의미를 갖는지를 말한다. 의미론 (Semantics)의 사전적 정의 출처: 네이버 사전 정보·통신 구문론에 따른 문자 나열로부터 어떤 의미를 결정하는 규칙. 언어는 일반적으로 구문론과 의미론의 두 가지 측면을 가지고 있으며, 프로그램 언어도 마찬가지로 두 개의 측면에서 규정된다. 프로그램이 컴퓨터상에서 어떤 처리를 해야 하는가를 정하는 것이다. 위의 설명처럼 언어는 구문론과 의미론 두가지 측면을 가진다고 한다. 그렇다면 구문론이란 무엇일까? 구문론 (Pronunciation) 이란? 출처: 네..

    모던 자바스크립트, 위크 맵(WeakMap) 과 위크 셋(WeakSet)

    모던 자바스크립트, 위크 맵(WeakMap) 과 위크 셋(WeakSet)

    위크맵 (WeakMap) 키를 메모리에 유지하지 않고 키와 관련된 값을 저장할 수 있다. 만일 키를 참조하는 것이 사라지면, 가비지 컬렉트 때 해당 키가 사라진다. 위크맵은 Iterable 이 아니다. Map 은 이터러블이었지만, WeakMap 은 아니다. 이러한 특성 때문에 키를 알아야만 값을 가져올 수 있다. Iterator 를 제공하면 제공된 Iterator 에 의해 키가 계속 참조되고, 영원히 가비지 컬렉트 될 수 없기 때문이다. 위크맵이 제공하는 메서드 has(): 키의 존재 여부 반환 get(): 키에 대한 값 반환, 없다면 undefined delete(): 키 삭제 성공하면 true 실패하면 false WeakMap 은 약한 참조를 이용하는 만큼, 키를 모르면 참조할 수 없기 때문에 키에 ..

    OSI 5, 6, 7 (세션, 표현, 응용) 계층과 Updated TCP/IP Model

    OSI 5, 6, 7 (세션, 표현, 응용) 계층과 Updated TCP/IP Model

    OSI 5(세션), 6(표현), 7(응용) 계층이 하나로 뭉친 이유 사실 OSI 7 Layer 라고 표현하는 7계층짜리 모델은 이미 시장에서 도태된 네트워크 시스템이다. 현대에는 OSI 7 Layer 모델의 일부를 계승한 TCP/IP 모델을 대부분 사용한다. 또, TCP/IP 모델에서도 한번 업데이트가 이루어져 사실상 Updated TCP/IP Model 이라 불리는 모델을 사용한다. TCP/IP 5 Layer Software Model 이라고 검색해보면 여러 정보가 나온다. 위의 그림은 3개의 모델 변천사를 정리해본 것이다. 최종 모델인 TCP/IP updated 모델을 보면, 4계층 밑으로는 OSI 7계층과 동일하며, 5, 6, 7 계층을 응용 계층(Application Layer)이라는 이름으로 통..

    모던 자바스크립트, 셋 혹은 세트 (Set)

    셋(Set) 이란? 고유한 값의 모음이다. 맵과 동일하게 동등성 비교에 SameValueZero 알고리즘이 적용된다. Iterable 이다. 값을 넣은 순서대로 순회한다. 기본 메서드 add(): 값을 추가할 때 사용한다. clear(): 맵의 모든 엔트리를 삭제할 때 사용한다. delete(): 하나의 엔트리를 삭제할 때 사용한다. has(): 해당 키가 있는지 확인할 때 사용한다. get(): 해당 키에 대응하는 value 를 얻을 때 사용한다. keys(): 모든 키를 MapIterator 형태로 얻는다. entries(): 키 밸류를 엔트리 형태로 얻는다. forEach(): forEach 형태로 순회한다. size: 내부에 몇개의 값이 있는지 알려준다. 동등성 비교 확인하기 맵과 동일하게 동등성..

    모던 자바스크립트, 맵 (Map)

    맵이란? 키/밸류 쌍을 저장한다. 이 쌍을 합쳐서 엔트리라고도 한다. 그래서 엔트리들을 저장한다고도 할 수 있다. 가끔 Map 자료구조가 적합한 곳에 오브젝트를 대신 사용하는데, 이는 좋지 않은 선택이다. 참고자료: Object 와 Map 의 차이 Map 의 탄생 ES2015+ 에서 맵(Map), 셋(Set), 위크맵(WeakMap), 위크셋(WeakSet) 이 생겼다. Set 은 중복되지 않은 값의 집합을 저장한다. 위크맵은 키가 객체이고 객체의 참조(strong reference)가 사라지면 가비지콜렉트된다. 위크셋은 위크맵의 Set 버전이다. Map 의 기본 메서드 set(): 값을 설정할 때 사용한다. clear(): 맵의 모든 엔트리를 삭제할 때 사용한다. delete(): 하나의 엔트리를 삭제..

    스프링 프레임워크 버전 4.2에서 4.3 업그레이드시 변화사항

    개요 스프링 프레임워크 버전 4.2에서 4.3으로 버전업을 수행했을 때 어떠한 변화가 일어나는지 알아보자. 시멘틱 버저닝에 대한 설명 아래는 스프링 프레임워크 버저닝에 대한 오피셜한 설명입니다. MAJOR, if incremented, may involve a significant amount of work to upgrade. / Major features and potential breaking changes MINOR, if incremented, should involve little to no work to upgrade. / Backward compatible features PATCH, if incremented, should involve no work. / Backward compatib..

반응형