1. Stream API에 대한 이해 [ Stream API에 대한 소개 ] Java는 객체지향 언어이기 때문에 기본적으로 함수형 프로그래밍이 불가능하다. (함수형 프로그래밍에 대해 이해가 부족하다면 이 글을 참고하길 바란다.) 하지만 JDK8부터 Stream API와 람다식, 함수형 인터페이스 등을 지원하면서 Java를 이용해 함수형으로 프로그래밍할 수 있는 API 들을 제공해주고 있다. 그 중에서 Stream API는 데이터를 추상화하고, 처리하는데 자주 사용되는 함수들을 정의해두었다. 여기서 데이터를 추상화하였다는 것은 데이터의 종류에 상관 없이 같은 방식으로 데이터를 처리할 수 있다는 것을 의미하며, 그에 따라 재사용성을 높일 수 있다. 예를 들어 주어진 배열이나 리스트의 데이터를 정렬된 상태로 ..
1. 함수형 프로그래밍(Functional Programming)에 대한 이해 [ 프로그래밍 패러다임(Programming Paradigm) ] 프로그래밍 패러다임(Programming Paradigm)은 프로그래머에게 프로그래밍의 관점을 갖게 하고 코드를 어떻게 작성할 지 결정하는 역할을 한다. 새로운 프로그래밍 패러다임을 통해서는 새로운 방식으로 생각하는 법을 배우게 되고, 이를 바탕으로 코드를 작성하게 된다. 최근의 프로그래밍 패러다임은 크게 아래와 같이 구분할 수 있다. 명령형 프로그래밍: 무엇(What)을 할 것인지 나타내기보다 어떻게(How) 할 건지를 설명하는 방식 절차지향 프로그래밍: 수행되어야 할 순차적인 처리 과정을 포함하는 방식 (C, C++) 객체지향 프로그래밍: 객체들의 집합으로 ..
지난 포스팅에서 데이터베이스 정규화와 관련된 내용을 정리했었다. 하지만 해당 내용이 쉽게 이해되지 않는 것 같아서 정규화 관련 글을 풀어서 다시 한번 정리해보고자 한다. 1. 정규화(Normalization) [ 정규화(Normalization)이란? ] 정규화(Normalization)의 기본 목표는 테이블 간에 중복된 데이타를 허용하지 않는다는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성(Integrity)를 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다. 이러한 테이블을 분해하는 정규화 단계가 정의되어 있는데, 여기서 테이블을 어떻게 분해되는지에 따라 정규화 단계가 달라지는데, 각각의 정규화 단계에 대해 자세히 알아보도록 하자. [ 제1 정규화 ] 제1 정규화란 테이블의 컬럼이 원..
1. CDATA란 무엇인가? [ XML 구조 ] 일반적으로 XML은 가장 위에 선언문(XML DeclDeclaration)이 존재하고 그 하위에 XML 문서의 요소들이 존재한다. 요소들은 시작 태그인 으로 끝 태그인 시작하여 으로 닫히게 되어있다. 다음과 같은 문서는 XML의 구조로 되어있는 XML 문서이다. 제목 문서의 제목은 웹 브라우저의 제목 표시줄에 표시된다. [ CDATA란? ] 그런데 만약에 위의 XML 문서에 내용이 추가되어 다음과 같이 수정되었다고 하자. 제목 문서의 제목은 웹 브라우저의 제목 표시줄에 표시된다. 강조 내용을 굵은 글씨로 강조하기 위해서는 ... 태그를 사용해야 한다. 대신 을 사용할 수 있다. 우리는 위의 내용에서 또는 태그가 XML의 구조를 위한 것이 아님을 알 수 있다..
1. 마이크로 서비스 아키텍처(MSA, MicroService Architecture)에 대한 이해 [ 마이크로 서비스 아키텍처(MSA, MicroService Architecture)란? ] 애플리케이션 개발 초기에는 전체 애플리케이션의 소스 코드를 하나의 배포 유닛(war 또는 ear)으로 내장시키는 '모놀리식' 방식을 이용하였다. 하지만 기존 애플리케이션에 최소한의 변경 사항이 있어도 자체적인 QA(Quality Assurance) 주기에 따라 대규모 업데이트를 해야 하거나 일부 애플리케이션의 업데이트로 오류가 발생한 경우 전체를 오프라인으로 전환하고 문제를 해결하는 등 다운타임이 발생하게 되었다. 이러한 문제점을 해결하기 위해 전통적인 모놀리식(monolithic) 접근 방식과 다르게 애플리케이션..