서버리스 Serverless 아키텍처 파헤치기
서버리스(Serverless)하면 대부분 AWS Lambda 를 떠올리곤 합니다. 하지만 서버리스는 단순히 FaaS(Function-as-a-Service)만을 의미하지는 않습니다. 이번 포스트에서는 서버리스 아키텍처에 대한 개념과 키워드를 정리하고, FaaS 의 내부 구조를 살펴봅니다. Serverless 서버리스는 말 그대로 ‘서버(Server)가 없다
서버리스(Serverless)하면 대부분 AWS Lambda 를 떠올리곤 합니다. 하지만 서버리스는 단순히 FaaS(Function-as-a-Service)만을 의미하지는 않습니다. 이번 포스트에서는 서버리스 아키텍처에 대한 개념과 키워드를 정리하고, FaaS 의 내부 구조를 살펴봅니다. Serverless 서버리스는 말 그대로 ‘서버(Server)가 없다
람다와 클로저 자바 커뮤니티에서는 클로저와 람다를 혼용하면서 개념 상 혼란이 있었습니다. 그래서 자바 8부터 클로저를 지원한다는 글을 보기도 합니다. 이번 포스트에서는 자바에서의 람다와 클로저를 명확히 구분해보고자 합니다. 먼저 일반적인 클로저부터 살펴보겠습니다. 클로저 Closure 보통의 함수는 외부에서 인자를 받아서 로직을 처리합니다. 그런데 클로저는
예외처리 람다 예외처리에서 주의할 점을 람다 작성 및 호출하는 입장으로 나눠서 살펴보겠습니다. 람다를 작성해서 넘겨주는 입장 : 해당 람다가 어떤 환경에서 실행될 지 알 수 없다. 람다를 받아서 호출(실행)하는 입장 : 람다에서 어떤 예외가 던져질 지 알 수 없다. 예제 다음 예제는 Runnable 을 순서대로 실행하는 메소드입니다. 1234public
변수 범위 람다는 새로운 변수 범위를 생성하지 않습니다. 람다 내에서 변수 사용은 둘러싸고 있는 환경의 변수들을 참조합니다. this 나 super 키워드도 마찬가지입니다. 따라서 복잡해지지 않습니다. 아래 예제에서 i 는 단순히 람다를 둘러싸고 있는 클래스의 필드를 가리키게 됩니다. 12345678910111213141516171819public stat
이전 포스트에서 함수형 인터페이스에 대해서 살펴봤습니다. 이번 포스트에서는 자바에서 기본적으로 제공하는 함수형 인터페이스를 살펴보겠습니다. 기본 API 에서 함수형 인터페이스는 java.util.function 패키지에 정의되어 있습니다. Functions Suppliers Consumers Predicates Operators Legacy Functio
메소드 참조 Method References 메소드 참조는 메소드를 간결하게 지칭할 수 있는 방법으로 람다가 쓰이는 곳 어디서나 사용할 수 있습니다. '참조’라는 말에서 알 수 있듯이 이미 존재하는 이름을 가진 메소드를 람다로써 사용할 수 있도록 참조하는(가리키는) 역할을 합니다. 즉, 일반 함수를 람다 형태로 사용할 수 있도록 해줍니다. 그리고 메소드를
타입 추론 Type Inference 타입 추론이란 타입이 정해지지 않은 변수의 타입을 컴파일러가 유추하는 기능입니다. 자바에서는 일반 변수에 대해 차입 추론을 지원하지 않기 때문에 자바에서의 타입 추론은 제네릭과 람다에 대한 타입 추론을 말합니다. 12345// 일반 변수에 대해 타입 추론을 지원하는 스칼라는 타입 생략 가능var name = "
이번 포스트부터 Java 8 에서 새로 도입된 람다(Lambda)와 Java 9 의 모듈 프로그래밍까지 쭉 다뤄보려고 합니다. 사실 람다도 몇 번 사용해보면 쉽게 익숙해질 수 있는 기술이지만, 내부적인 동작 원리까지 알아보려고 합니다. Lambda 람다 대수는 1930년대 알론조 처치Alonzo Church가 소개한 함수의 수학적 표기 방식입니다. 람대 대