티스토리 뷰

생산성

  • Lombok: @Getter, @Setter와 같이 의미 없고 휴먼 에러를 유발하기 쉬운 반복적인 보일러플레이트 코드를 어노테이션으로 대체해주는 훌륭한 생산성 향상 라이브러리이다. 실제 코드는 컴파일 단계에 자동으로 작성됨으로서 성능 이슈도 전혀 존재하지 않는다. 현재 Java 9(Java 10은 아직 미지원)을 지원한다.

HTTP

  • OKHttp: HTTP/2HTTP/1.X 커넥션 풀을 지원하는 HTTP 클라이언트 라이브러리이다.
  • Retrofit: 로우 레벨의 OkHttp를 기반으로 HTTP 요청 행위를 Java 인터페이스화한 하이 레벨의 HTTP 클라이언트 라이브러리이다.

JSON

  • Jayway JsonPath: JSONPath 스펙의 Java 구현체 라이브러리이다. JSON 문자열을 POJO로 변환할 필요 없이 특정 필드의 값이나 값의 배열을 추출할 수 있고, 또한 특정 필드와 값을 새롭게 생성하거나 변경할 수도 있다.

비동기

  • RxJava: ReactiveXJava 구현체 라이브러리이다. 쓰레드를 직접 제어할 필요 없이 직관적인 비동기 코드를 작성할 수 있다.

테스트

  • Selenide: 로우 레벨의 Selenium을 하이 레벨로 추상화한 라이브러리이다. 브라우저 테스팅을 직관적인 코드로 쉽게 할 수 있다.
  • AssertJ: 직관적인 기대 값 검사를 가능하게 해주는 Assertion 라이브러리이다.

템플릿 엔진

  • Rythm: RythmJava 템플릿 엔진이다. 닷넷 진영의 Razor 템플릿 엔진에 영감을 받아 만들어 유사한 문법을 제공한다. IntelliJ IDEA 사용자는 써드 파티에 의해 제공되는 RED 플러그인을 설치하면 IDE의 도움을 받아 편리하게 템플릿을 작성할 수 있다.

NoSQL 클라이언트

  • Jedis: Jedis는 가장 유명한 Redis 클라이언트 라이브러리이다. 비동기가 지원되지 않는 점, 쓰레드 안전을 보장하려면 반드시 커넥션 풀을 구성해야 하는 제약이 있지만 단일 연산의 실행 속도는 가장 빠르며 사용법 또한 직관적이다. 실제로 프로덕션 레벨에서 사용해본 결과 동일 연산 실행시 1ms 미만인 것이 Lettuce는 1ms 이상이 소요되는 것을 확인했다.
  • Redisson: RedissonJava 레벨로 완전히 추상화된 비동기 지원 Redis 클라이언트 라이브러리이다. Redis의 명령어를 직접 사용할 수 없어 처음은 힘들지만 익숙해지면 최적화된 생산성과 성능을 누릴 수 있다. SET, GET, EXPIRE 명령을 추상화한 고유의 RBucket<Object> 클래스를 이용하여 평범한 Java 오브젝트를 다루는 느낌으로 연산을 수행할 수 있다. 제작자는 같은 조건에서 초당 처리 가능한 SET 연산 수가 Jedis가 54,355건일 경우, Redisson은 211,408건까지 가능하다고 주장한다. JacksonMessagePack을 포함한 다양한 저장 방식을 지원한다.

캐시

  • Google Guava Cache: Google Guava Cache는 가장 단순한 형태의 캐시이다. 생명주기는 현재 실행 중인 JVM의 힙 메모리 공간으로 제한되어 클러스터 레벨에서의 캐시 공유는 불가능하지만 로컬 캐시로 부담 없이 쓰기에는 이만한 것이 없다. 로컬 캐시 라이브러리 중에 성능이 가장 우수하지는 않지만 용량은 가장 작다. [관련 링크]
  • cache2k: cache2k는 로컬 캐시 중에 가장 성능이 우수한 캐시 라이브러이다. Google Guava Cache 만으로 부족하다면 느껴진다면 강력히 추천한다. [관련 링크]

저장소

  • Apache Ignite: Apache Ignite는 수평 확장 가능한 고속의 인모메리, 온디스크 저장소이다. 앞서 로컬 캐시로서 cache2k를 사용할 수 있었다면 Apache Ignite는 다중 노드 간의 분산 캐시로서 사용할 수 있다. JCache를 지원한다.

솔루션

  • Keycloak: KeycloakOAuth 2.0, OIDC, SSO 등 현존하는 대부분의 표준 인증 프로토콜을 지원하는 무료 오픈소스 인증 및 접근 관리 솔루션이다. Keycloak이 구축된 상태에서 Spring Boot 기반의 웹 애플리케이션에 org.keycloak:keycloak-spring-boot-starter 아티팩트만 추가하면 최소한의 공수로 국제 표준을 따르는 인증 기능을 구현할 수 있다.
댓글
댓글쓰기 폼