함수형 프로그래밍에 대해 살펴보기 전에, 프로그래밍 패러다임을 이루는 두 가지 개념인 명령형 프로그래밍과 선언형 프로그래밍에 대해 알아보자 🤗 프로그래밍 패러다임은 크게 명령형 프로그래밍과 선언형 프로그래밍으로 나뉜다. 이 두 가지 방식은 프로그램의 구조와 실행 방식을 다르게 정의한다. 명령형 프로그래밍 먼저, 명령형 프로그래밍은 어떻게(HOW)...
스트림 (Stream)
스트림이란 무엇일까? 자바 8 API에 새로 추가된 기능으로, 스트림이란 ‘데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소’로 정의할 수 있다. 스트림의 정의에 사용된 단어의 의미를 하나하나 뜯어보자! 데이터 처리 연산? 함수형 프로그래밍 언어에서 일반적으로 지원하는 연산, 그리고 데이터베이스와 비슷한 연산을 지원...
동작 파라미터화와 람다식
들어가면서 자바 역사 상 가장 큰 변화는 자바 8에서 일어났다고 해도 과언이 아니다. 자바 8에서 새롭게 추가된 개념과 기법들이 많은데, 자바 8 설계의 밑바탕을 이루는 세 가지 프로그래밍 개념은 다음과 같다. 스트림 처리 동작 파라미터화로 메서드에 코드 전달하기 병렬성과 공유 가변 데이터 이 중 ‘동작 파라미터화’ 개념은 람다식이 ...
싱글톤 패턴 (Singleton Pattern)
싱글톤 패턴? 클래스의 인스턴스를 단 하나만 생성하도록 보장하는 패턴을 말한다. 어플리케이션에 특정 객체가 단 하나만 존재해야 하고, 이 객체에 전역으로 접근해야할 때 사용한다. 쉽게 말하면, 객체 딱 하나만 만들어두고서 인스턴스가 필요할 때 새로 만들지 않고 기존에 만들어두었던 것을 가져와 활용하는 기법인 것! 오, 전역 변수랑 비슷하다! 똑...
객체 지향 설계 5가지 원칙, SOLID
‘인터페이스를 통한 의존성 역전’에 대해 찾아보다가, 객체 지향 설계 5가지 원칙 중 DIP에 대한 내용임을 알게 되었다. 그래서 나머지 4가지 원칙도 함께 살펴보고, 정리해보고자 한다! SOLID란?! SOLID란 객체 지향 설계에서 지켜야 할 5가지 소프트웨어 개발 원칙을 말한다. 이 5가지 원칙을 적용한다면 코드의 유지보수성, 확장성, 유연...
Java의 final, static 키워드
의존성 주입과 final 키워드의 관계를 알아보다가, final 키워드에 대한 내용을 찾아보게 되었다. final 키워드와 함께 static 키워드에 대해서도 알아보면서 알게 된 내용을 정리해 작성해보았다 😉 final 키워드, static 키워드에 대해 각각 알아보고 두 키워드를 함께 쓸 때의 이점도 함께 알아보자! final 키워드 final ...
final과 의존성 주입
컨트롤러에 Service 클래스를 선언하고, @AllArgsConstructor를 클래스 상단에 선언하여 생성자 주입을 받을 수 있도록 했다. 그런데 다음과 같이 IntelliJ에서 해당 변수에 마크 표시가 되어 있었다. 표시된 부분에 커서를 올려보니 해당 필드를 final로 선언할 수 있다는 메시지가 떴다. ( 좀 더 자세한 설명을 보기 위해...
의존성 주입 (DI, Dependency Injection) 톺아보기
의존성 주입에 대해 설명하기에 앞서, ‘의존’ 이라는 단어에 대한 이해부터 하고 들어가자! 의존이란 무엇인가! A 클래스에서 B 클래스를 사용하고 있을 때, A 클래스가 B 클래스에 의존한다고 한다. public class A { private B b = new B(); public void performAction() { b....
Cloud SQL Proxy로 비공개 DB 접속하기
들어가기 전 💬 현재 회사에서 두 서비스의 API 통합 작업을 진행하고 있는데, 통합 과정에서 몇 가지 문제점이 발생했다. 이 문제들을 해결하기 위해서 어떤 방법을 사용했고, 어떻게 해결했는지를 정리해보고자 한다 🤓 먼저 현재 두 서비스가 어떤 구조로 구성되어 있는지부터 설명해보자면 다음과 같다. A 서비스는 Proj-A에 모든 인프라가 위치...
Cloud Build를 이용한 GKE 자동 배포 설정하기 - 3
앞선 2편에서 GKE 배포 설정 파일(deployment.yaml)을 생성하여 각종 설정을 해주는 것 까지 진행해보았다. 이제 마지막으로 드디어! Cloud Build로 GKE에 배포하기 위한 여러 설정들을 해보자. 클러스터 생성 가장 먼저 Kubernetes 클러스터를 생성해주어야 한다. 구글 클라우드 콘솔 - Kubernetes Engine ...