전체보기(194)
-
Java Module
Moudle이 등장하게 된 배경 Java는 public, private와 같은 클래스 수준의 한정자가 있습니다. 그러나 이 한정자들은 클래스까지만 유효하고 패키지를 넘어서면 힘을 잃어버리게 됩니다. 이러한 캡슐화에 대한 지원 부족으로 인해 Java Module이 등장했습니다. 예를 들어, 우리는 JAR로 제공된 패키지의 클래스를 보면 어느 클래스를 써야할 지 알 수 가 없습니다. 대부분의 클래스가 public이고 접근이 가능합니다. 그 안에는 API 설계자가 내부 구현을 위해 만든 내부용 API 문서도 있습니다. 기존에는 내부용 API에 접근이 가능합니다. JAR로 제공되고 문서화가 잘 되더라도 클래스와 메소드가 public이면 API 설계자가 의도하지 않은 호출이 발생할 수 있습니다. Module이란 ..
2020.09.07 -
JAVA 9
불변 Collection 생성 메소드 제공 정적인 Collection 객체를 생성할 수 있는 팩토리 메소드를 제공합니다. List immutableList = List.of("one","two","three"); Set immutableSet = Set.of("one","two","three"); Map immutableMap = Map.of(1,"one",2,"two",3,"three");Java 9 Module System Java Module 시스템을 이용해 안정적인 구성과 강력하고 유연한 캡슐화를 제공합니다. 이를 통해 개발자는 확장 가능한 플랫폼을 만들고 플랫폼 무결성을 높이며 성능을 향상시킬 수 있습니다. 편하고 효율적인 Java 개발 환경을 만들기 위해서 개발 Jar 기반 모노리틱 방식을 개..
2020.09.06 -
JWT
JWT JWT(Json Web Token)이란 JSON 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token입니다. JWT는 토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 안전하게 전달합니다. 주로 회원 인증이나 정보 전달에 사용되는 JWT는 아래의 로직을 따라서 처리됩니다. 애플리케이션이 실행될 때, JWT를 static 변수와 로컬 스토리지에 저장합니다. static 변수에 저장하는 이유는 HTTP 통신을 할 때마다 JWT를 HTTP 헤더에 담아서 보내야 하는데, 이를 로컬 스토리지에서 계속 불러오면 오버헤드가 발생하기 때문입니다. 클라이언트에서 JWT를 포함해 요청을 보내면 서버는 허가된 JWT인지를 검사합니다. 또한 로그아웃을 할 경우 로컬 스..
2020.08.24 -
Composite Pattern
Composite Pattern Composite Pattern이란 여러 개의 객체들로 구성된 복합 객체와 단일 객체를 클라이언트에서 구별 없이 다루게 해주는 패턴입니다. 즉, 전체-부분의 관계를 갖는 객체들 사이의 관계를 정의할 때 유용합니다. 또한 클라이언트는 전체와 부분을 구분하지 않고 동일한 인터페이스를 사용할 수 있습니다. Component: 모든 표현할 요소들의 추상적인 인터페이스 Leaf: Component로 지정된 인터페이스를 구현한 객체 Composite: Component 요소를 자식으로 가지고 Component 요소를 관리하기 위한 메소드들을 구현한 객체Composite Pattern의 예시 예를 들어 간단한 파일 시스템을 구현해보겠습니다. 먼저 필요한 것은 파일입니다. File.ja..
2020.07.03 -
Spring Batch
Batch Application Batch는 일괄처리 라는 뜻을 가지고 있습니다. 만약 하루 전 날의 데이터를 집계해야한다고 가정해보겠습니다. 하루 전 날의 데이터들을 모으면 상당히 많은 양의 데이터가 모입니다. 이렇게 큰 데이터를 읽고 가공하고 저장한다면 해당 서버는 순식간에 CPU, I/O등의 자원을 다 써버려서 다른 Request를 처리하지 못합니다. 그리고 이 기능은 하루에 1번 수행됩니다. 이를 위해 API를 구성하는 것은 많은 낭비입니다.이렇게 단발성으로 대용량의 데이터를 처리하는 Application을 Batch Application이라고 합니다. Batch Application은 다음의 조건들을 만족해야만 합니다. 대용량 데이터: Batch Application은 대량의 데이터를 가져오거나..
2020.07.02 -
Web Socket
Web Socket이란 Web Application에서 기존의 서버와 클라이언트 간의 통신은 대부분 Http를 통해 이루어졌으며 Http는 Stateless Protocl입니다. 즉, 서버와 클라이언트 간의 Socket Connection같은 영구적인 연결이 되어있지 않고 클라이언트 쪽에서 필요할 때 Reqeust를 보내면 서버가 Response하는 방식으로 통신이 진행됩니다. 이러한 경우 서버쪽 데이터가 업데이트 되더라도 클라이언트 쪽에는 Refresh하지 않는 한 변경된 데이터가 업데이트 되지 않는 문제가 발생합니다. 이러한 문제는 일반적인 Web Application에서는 Ajax와 같은 통신을 사용해도 어느 정도 해결이 가능하지만 데이터의 빠른 업데이트가 아주 중요한 경우에는 한계가 있습니다. 그..
2020.06.26