티스토리 뷰

생산성

  • 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 라이브러리이다.

템플릿 엔진

  • Pebble: PHP 진영의 Twig에 영감을 받아 제작된 Java 템플릿 엔진이다. 템플릿 상속, 가독성, 오토이스케이핑, i18n 등을 제공하여 기본기에 충실하고 현재까지 버전업이 활발한 템플릿 엔진이다. [관련 링크] Spring Boot 기반 프로젝트의 경우 pebble-spring-boot-starter 아티팩트를 제공하여 매우 편리하게 사용할 수 있다. 프로젝트 임포트 후 /src/main/resources/templates 경로에 .pebble 확장자를 가진 템플릿 파일을 작성한 후 컨트롤러 메써드에서는 해당 이름의 뷰에 모델을 담아 리턴하면 된다. [관련 링크] [예제 링크] 가장 중요한 IDE에서의 지원 또한 활발하다. IntelliJ IDEA의 플러그인을 제공한다. [플러그인 링크]
  • 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 만으로 부족하다면 느껴진다면 강력히 추천한다. [관련 링크]

분산 트랜잭션

  • Seata는 알리바바가 공개한 오픈 소스 분산 트랙잭션 라이브러리이다. 현대적인 복수개의 마이크로서비스 환경에서의 단일한 분산 트랜잭션을 추상화하여 간결하게 제공하는 것이 특징이다. [라이브러리 링크] [Spring Boot 연동 예제 링크]

저장소

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

솔루션

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

메신저 연동

  • RoboSlack: RoboSlackSlack 메신저의 특정 채널에 메시지를 전송하게 해주는 라이브러리이다. 개발자가 직접 하려면 번거러울 수 있는, Slack이 제공하는 다양한 문법을 광범위하게 지원하는 것이 특징이다. 단점으로는 라이브러리 저장소가 메이븐이 아닌 자체 저장소인 것이 한가지 흠이다. LogbackUnsynchronizedAppenderBase를 상속하여 MDCRoboSlack을 이용하면 입맛에 맞는 로그 어펜더를 제작할 수 있다.

Kotlin

  • KVision은 순수하게 Kotlin 언어 만으로 웹 UI를 제작할 수 있는 프레임워크이다. 프론트엔드를 모르는 개발자도 어드민, 대시보드 같은 반복적인 패턴의 웹 앱 정도는 어렵지 않게 구축할 수 있는 것이 특징이다. [라이브러리 링크]
  • Anko: Kotlin 기반 안드로이드 개발 환경을 편리하게 만들어주는 라이브러리이다. 맥가이버 칼과도 같은 여러 유용한 유틸리티를 제공한다.
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함