You Can Become A
๋ฆ๊ฒ ์์ํด๋ ๋๊ตฌ๋ ์ง ๋ ธ๋ ฅํ๋ฉด ๊ฐ๋ฐ์๊ฐ ๋ ์ ์์ด์ !
๋๋ค
โ ๋๋ค์ ๋ฆฌํฉํ ๋ง ํ๊ธฐ (Comparator ์ถ์ฝ ์๋ฆฌ)
Comparator ๋๋ค์ ๋ฆฌํฉํ ๋ง ํด๋ณด๊ธฐ ๋ค์์ ์ค์ ๋ก ์๋ฐ ํ๋ก๊ทธ๋๋ฐ์์ ๋ฐฐ์ด์ ์ ๋ ฌ(sort) ํ ๋ ์ฌ์ฉ๋๋ Comparator ์ธํฐํ์ด์ค ์ฌ์ฉ ์์ ์ด๋ค. Apple ํด๋์ค๊ฐ ์๊ณ ์์ฑ์ ์ธ์๋ก ์ฌ๊ณผ์ ๋ฌด๊ฒ(weight)๊ฐ์ ๋ฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์คํ๋ถ์์ ๋ฐฐ์ด๋ก ์ฌ๊ณผ ๊ฐ์ฒด๋ฅผ ๋ด๊ณ , ์ฌ๊ณผ ๋ฌด๊ฒ์ ๋ฐ๋ผ ๋ฐฐ์ด ์์๋ค์ ์ ๋ ฌํ๋ ค๊ณ ํ๋ค. ์ด๋ฅผ ์ฝ๋๋ก ๊ตฌํํ๋ฉด ์๋์ ๊ฐ์ด ๊ตฌํํ ์ ์๋ค. class Apple { private final int weight; // ์ฌ๊ณผ ๋ฌด๊ฒ public Apple(int weight) { this.weight = weight; } public int getWeight() { return weight; } @Override public String toString() { ret..
โ ๋๋ค์์ ๋ ์งง๊ฒ - ๋ฉ์๋::์ฐธ์กฐ ๋ฌธ๋ฒ
๋๋ค์ ๋ฉ์๋::์ฐธ์กฐ ์๋ฐ์ ๋๋คํํ์์ ํตํด ์ฝ๋ ์ ์๋ฅผ ํ์ ์ ์ผ๋ก ์ค์ฌ์ฃผ์์ง๋ง ์ด๋ณด๋ค ๋ ๊ฐ๋ตํ๊ฒ ์ค์ด๋ ๋ฌธ๋ฒ์ด ์๋ค. ๋ฉ์๋ ์ฐธ์กฐ(Method Reference)๋ ๋ง ๊ทธ๋๋ก ์คํํ๋ ค๋ ๋ฉ์๋๋ฅผ ์ฐธ์กฐํด์ ๋งค๊ฐ ๋ณ์์ ์ ๋ณด ๋ฐ ๋ฆฌํด ํ์ ์ ์์๋ด์ด, ๋๋ค์์์ ๊ตณ์ด ์ ์ธ์ด ๋ถํ์ํ ๋ถ๋ถ์ ์๋ตํ๋ ๊ฒ์ ๋งํ๋ค. ๋๋ค์์ ๋ณต์กํ๊ณ ๊ธธ๋ค๋ ๋ก์ง๋ณด๋จ ๊ธฐ์กด ๋ฉ์๋๋ค์ ๋จ์ํ ํธ์ถ๋ง ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์๋ฅผ ๋ค์ด ๋ ๊ฐ์ ๊ฐ์ ๋ฐ์ ์์ ์๋ฅผ ๋ฆฌํดํ๋ Math ํด๋์ค์ max() ์ ์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๋๋ค์์ ๋ค์๊ณผ ๊ฐ๋ค. (x, y) -> Math.max(x, y) ์ด ์์ฒด๋ก๋ ๊ฐ๋ตํด ๋ณด์ด์ง๋ง, ์๋ฐ ๊ฐ๋ฐ์ง์ ๊ทธ๋ฌ์ง ์์๊ฐ ๋ณด๋ค. ํจ์ ํํ๋ฅผ ๋ณด๋ฉด ๋ฆฌํด๊ฐ ์์ฒด๊ฐ ๋๋ค๋ฅธ Math ํด๋์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ..
โ ํจ์ ๋์คํฌ๋ฆฝํฐ(Function Descriptor) ๋?
ํจ์ ๋์คํฌ๋ฆฝํฐ ๋ณดํต ์๋ฐ์ ๋๋ค ํํ์(Lambda Expression)์ ์ฌ์ฉ ์ฉ๋๋ฅผ ๋๊ฐ์ง๋ก ์ ์ํ๋๋ฐ, ํ๋๋ ๋๋ค ํจ์๋ก์์ ์ฉ๋ ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ํ๋๋ ํจ์ํ ์ธํฐํ์ด์ค์ ์ถ์ ๋ฉ์๋์ ์ญํ ์ ์ค๋ช ํด๋์ ์๊ทธ๋์ฒ๋ก์ ์ฐ์ธ๋ค. ๊ทธ์ค ํจ์ ๋์คํฌ๋ฆฝํฐ(Function Descriptor)๋ ๋จ์ด ๊ทธ๋๋ก ํจ์๊ฐ ์ด๋ค ์ ๋ ฅ๊ฐ์ ๋ฐ๊ณ ์ด๋ค ๋ฐํ๊ฐ์ ์ฃผ๋์ง์ ๋ํ ์ค๋ช ์ ๋๋ค ํํ์ ๋ฌธ๋ฒ์ผ๋ก ํํํ ๊ฒ์ ์๋ฏธํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค. ์๋ฅผ๋ค์ด, () -> void ๋ ํ๋ผ๋ฏธํฐ ๋ฆฌ์คํธ๊ฐ ์์ผ๋ฉฐ void๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ์๋ฏธํ๋ ๋์คํฌ๋ฆฝํฐ๋ฉฐ, (int, int) -> double ๋ ๋๊ฐ์ int๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ doubleํ ์๋ฃ๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ์ค๋ช ํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค. ์ด์ฒ๋ผ ํจ์ ๋์คํฌ๋ฆฝํฐ๋ ์ฃผ๋ก java.ut..
โ ํจ์ํ ์ธํฐํ์ด์ค ํ์ค API ์ด์ ๋ฆฌ
ํจ์ํ ์ธํฐํ์ด์ค ํ์ค API ํจ์ํ ์ธํฐํ์ด์ค(functional interface)๋ ์ถ์๋ฉ์๋๊ฐ 1๊ฐ๋ง ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ํต์นญํ์ฌ ์ผ์ปซ๋๋ค. ์ด ์ธํฐํ์ด์ค ํํ์ ๋ชฉ์ ์ ์๋ฐ์์ ๋๋ค ํํ์(Lambda Expression)์ ์ด์ฉํด ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๊ตฌํํ๊ธฐ ์ํด์ ์ด๋ค. // @FunctionalInterface ์ด๋ ธํ ์ด์ ์ ์ธํฐํ์ด์ค์ ๋ถ์ฌ์ฃผ๋ฉด, // ๋ ๊ฐ ์ด์์ ๋ฉ์๋ ์ ์ธ ์ ์ปดํ์ผ ์ค๋ฅ๋ฅผ ๋ฐ์์์ผ ๊ฐ๋ฐ์์ ์ค์๋ฅผ ์ค์ผ ์ ์๋ค. @FunctionalInterface public interface Animal { public void method(); } ๊ทธ๋ฐ๋ฐ ๊ณฐ๊ณฐํ ์๊ฐํด๋ณด๋ฉด ํจ์์ ํํ(Signature)๋ ๋ค์ํ๋ค. ํจ์์ ๋ฆฌํด ๊ฐ์ด ์์์๋ ์์์๋ ์๊ณ ๋งค๊ฐ๋ณ์ ๊ฐฏ์๊ฐ 1๊ฐ..
โ ๋๋ค ํํ์(Lambda Expression) ์๋ฒฝ ์ ๋ฆฌ
๋๋ค ํํ์ (Lambda Expression) ๋๋ค ํํ์(lambda expression)์ด๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๊ตฌ์ฑํ๊ธฐ ์ํ ํจ์์์ด๋ฉฐ, ๊ฐ๋จํ ๋งํด ์๋ฐ์ ๋ฉ์๋๋ฅผ ๊ฐ๊ฒฐํ ํจ์ ์์ผ๋ก ํํํ ๊ฒ์ด๋ค. ์ง๊ธ๊น์ง ์๋ฐ์์๋ ๋ฉ์๋๋ฅผ ํ๋ ํํํ๋ ค๋ฉด ํด๋์ค๋ฅผ ์ ์ํด์ผ ํ๋ค. ํ์ง๋ง ๋๋ค์์ผ๋ก ํํํ๋ฉด ๋ฉ์๋์ ์ด๋ฆ๊ณผ ๋ฐํ๊ฐ์ ์๋ตํ ์ ์๊ณ ์ด๋ฅผ ๋ณ์์ ๋ฃ์ด ์๋ฐ ์ฝ๋๊ฐ ๋งค์ฐ ๊ฐ๊ฒฐํด์ง๋ ์ฅ์ ์ด ์๋ค. ์๋ ๊ทธ๋ฆผ์์ ๋ณด๋ฏ์ด int add(int a, int b) {} ๋ฉ์๋ ํํ์์, ๋ฉ์๋ ํ์ , ๋ฉ์๋ ์ด๋ฆ, ๋งค๊ฐ๋ณ์ ํ์ , ์ค๊ดํธ, return ๋ฌธ์ ์๋ตํ๊ณ , ํ์ดํ ๊ธฐํธ๋ฅผ ๋ฃ์์ผ๋ก์จ ์ฝ๋๋ฅผ ํ๋ช ์ ์ผ๋ก ํจ์ถํ์์ ๋ณผ ์ ์๋ค. ์ด๋ฌํ ํน์ง์ผ๋ก ๋๋ค์์ ์ด๋ฆ์ด ์๋ ํจ์ ์ต๋ช ํจ์(anonymous..
๐จโ๐ป ์ผ๊ธ ๊ฐ์ฒด(first-class object) ๋?
์ผ๊ธ ๊ฐ์ฒด ๋? ๋ณดํต ์๋ฐ์ ๋๋ค ํํ์(Lambda Expression)์ ๋ฐฐ์ฐ๋ค ๋ณด๋ฉด '์ผ๊ธ ๊ฐ์ฒด' ๋ผ๋ ๋จ์ด๋ฅผ ์ ํ๊ฒ ๋๋๋ฐ, ๋ป์ ์๋ฌด๋ฆฌ ๋ด๋ ๋์ฒด ๋ฌด์ผ ๋งํ๋ ๊ฑด์ง ์๋ฟ์ง ์์ ๊ฒ์ด๋ค. '์ผ๊ธ' ์ด๋ ๋ป์ ์ผ๊ธ ์๋ฏผ ์ฒ๋ผ ๋ฌด์จ ํํ์ ๋ฐ๋ ๋ค๋ ๋ป์ด ์๋๋ผ, ์ฌ์ฉํ ๋ ๋ค๋ฅธ ์์๋ค๊ณผ ์๋ฌด๋ฐ ์ฐจ๋ณ์ด ์๋ค๋ ๊ฒ์ ๋ปํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณดํต ์ผ๊ธ ๊ฐ์ฒด๋ฅผ ์๋ 3๊ฐ์ง ์กฐ๊ฑด์ ์ถฉ์กฑํ ๊ฐ์ฒด๋ฅผ ์ผ์ปซ๋๋ค. ๋ชจ๋ ์ผ๊ธ ๊ฐ์ฒด๋ ๋ณ์๋ ๋ฐ์ดํฐ์ ๋ด์ ์ ์์ด์ผ ํ๋ค. ๋ชจ๋ ์ผ๊ธ ๊ฐ์ฒด๋ ํจ์์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ ํ ์ ์์ด์ผ ํ๋ค. ๋ชจ๋ ์ผ๊ธ ๊ฐ์ฒด๋ ํจ์์ ๋ฆฌํด๊ฐ์ผ๋ก ์ฌ์ฉ ํ ์ ์์ด์ผ ํ๋ค. ์ผ๊ธ ๊ฐ์ฒด๋ ์ด๋ ํ ํน์ ์ธ์ด์ ๊ตญํ๋๋ ๋ฌธ๋ฒ ๋จ์ด๊ฐ ์๋๋ค. ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ ๊ฐ๋ ์ผ๋ก์, ์๋ฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ ๋ค์ํ ์ธ์ด๊ฐ..
[AWS] ๐ API Gateway ๊ฐ๋ & ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ ์ ๋ฆฌ
API Gateway ์๋น์ค API Gateway๋ ๊ท๋ชจ์ ์๊ด์์ด API ์์ฑ, ์ ์ง ๊ด๋ฆฌ, ๋ชจ๋ํฐ๋ง๊ณผ ๋ณดํธ๋ฅผ ํ ์ ์๊ฒ ํด์ฃผ๋ ์๋น์ค์ด๋ค. ๋ง ๊ทธ๋๋ก Client์์ server๋ก ํต์ ํ ๋ ์ฌ์ฉํ๋ ๋ง์ api๋ค์ ๋๋ฌธ(๊ฒ์ดํธ์จ์ด)๊ณผ ๊ฐ์ ์ญํ ์ ํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค. ์ฆ, API๊ฐ ์ง๋๊ฐ๋ ํต๋ก์ธ ์ ์ด๋ค. API Gateway๋ฅผ ์ด์ฉํ๋ฉด ํตํฉ์ ์ผ๋ก ์๋ํฌ์ธํธ์ REST API๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค. API ๊ฒ์ดํธ์จ์ด๋ฅผ ๋ฑ๋กํด์ฃผ๋ฉด, ๋ชจ๋ ํด๋ผ์ด์ธํธ๋ ๊ฐ ์๋น์ค์ ์๋ํฌ์ธํธ ๋์ API Gateway๋ก ์์ฒญ์ ์ ๋ฌํ์ฌ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํด ์ง๋ค. ์ฌ์ฉ์๊ฐ ์ค์ ํ ๋ผ์ฐํ ์ค์ ์ ๋ฐ๋ผ ๊ฐ ์๋ํฌ์ธํธ๋ก ํด๋ผ์ด์ธํธ๋ฅผ ๋๋ฆฌํ์ฌ ์์ฒญํ๊ณ ์๋ต์ ๋ฐ์ผ๋ฉด ๋ค์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ๋ ํ๋ก์(proxy) ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ..
[AWS] ๐ ๋๋ค(Lambda) ๊ฐ๋ & ์ฌ์ฉ๋ฒ ๐ฏ ์ด์ ๋ฆฌ
AWS Lambda AWS ๋๋ค(Lambda)๋ ์๋ฒ๋ฆฌ์ค ์ปดํจํ FaaS ์ํ์ด๋ค. ์๋ฒ๋ฆฌ์ค๋ ๊ฐ๋ฐ์๊ฐ ์๋ฒ๋ฅผ ๊ด๋ฆฌํ ํ์ ์์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํ๊ณ ์คํํ ์ ์๋๋ก ํ๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๊ฐ๋ฐ ๋ชจ๋ธ์ด๋ค. ์ฆ, ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด๊ฐ ์๋ฒ ์ธํ๋ผ์ ๋ํ ํ๋ก๋น์ ๋, ์ ์ง ๊ด๋ฆฌ ๋ฑ์ ๋์ ์ฒ๋ฆฌํด์ฃผ๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์๋ ์กฐ๊ธ ๋ ๋น์ฆ๋์ค ๋ก์ง ์์ฑ์๋ง ์ง์คํ ์ ์๊ฒ ๋๋ค. [WEB] ๐ ์๋ฒ๋ฆฌ์ค(ServerLess) ๊ฐ๋ ๐ฏ ์ ๋ฆฌ (BaaS / FaaS) ์๋ฒ๋ฆฌ์ค ์ํคํ ์ณ(Serverless) ๋? ์๋ฒ๋ฆฌ์ค(Serverless)๋ ์ง์ญํ๋ฉด "์๋ฒ๊ฐ ์๋ค"๋ผ๋ ๋ป์ด ๋๋ค. ํ์ง๋ง ์ ๋ง๋ก ์๋ฒ๊ฐ ์๋ ๊ฒ์ ๋ปํ๋๊ฒ ์๋๋ค. ์๋น์ค๋ฅผ ํ๋๋ฐ ์์ด ์ด์ฐ๋์๋ ์ ์ฅ์๋ ํ inpa.tistory.com ๋ค์ ๋ณธ๋ก ์ผ๋ก..
๐ ์๋ฒ๋ฆฌ์ค(ServerLess) ๊ฐ๋ ๐ฏ ์ ๋ฆฌ (BaaS / FaaS)
์๋ฒ๋ฆฌ์ค ์ํคํ ์ณ ๋? ์๋ฒ๋ฆฌ์ค(Serverless)๋ ์ง์ญํ๋ฉด "์๋ฒ๊ฐ ์๋ค"๋ผ๋ ๋ป์ด ๋๋ค. ํ์ง๋ง ์ ๋ง๋ก ์๋ฒ๊ฐ ์๋ ๊ฒ์ ๋ปํ๋๊ฒ ์๋๋ค. ์๋น์ค๋ฅผ ํ๋๋ฐ ์์ด ์ด์ฐ๋์๋ ์ ์ฅ์๋ ํ์ํ๊ณ ์๋ฒ๋ ํ์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ์ ํํ ๋งํ์๋ฉด, ์๋ฒ๋ฆฌ์ค๋ ์๋ฒ๊ฐ ์๋ ๋ฐฑ์๋ ๋ผ๋ ๋ป์ด ์๋ ์ฐ๋ฆฌ๊ฐ ์ง์ ์๋ฒ๋ฅผ ๊ด๋ฆฌํ์ง ์์ ์ ๊ฒฝ ์ธ ํ์์๋ ๊ฒฝ์ฐ๋ฅผ ๋ปํ๋ค. ์ฆ, ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ(Serverless Architecture)๋ ์๋ฒ๋ฅผ ์ง์ ๊ด๋ฆฌํ ํ์๊ฐ ์๋ ์ํคํ ์ฒ๋ฅผ ์นญํ๋ค. ์๋ฒ๋ฆฌ์ค๋ ํนํ, ์ฌ์ด๋ ํ๋ก์ ํธ๋ ๋น ๋ฅด๊ฒ ํ๋กํ ํ์ ์ ์ถ์ํ ๋ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ์ ํ์ ์ถ์ํ ์ ์๊ณ , ๋๋ ๋งค์ฐ ์ ์ฝํ ์ ์๋ค. ์๋ฒ๋ฆฌ์ค ์์ฅ์ ์ง๊ธ๋ ๋ฌด์ญ๊ฒ ์ฑ์ฅํ๊ณ ์์ด, ๊ด์ฌ์ ๊ฐ์ ธ์ ๋ ์ข์ ์ด์ ํ๊ฒฝ์ ๊ณ ๋ คํ๋๊ฒ์ ..