ohjongsung's Dev Story

Ohjongsung's Dev Story

Spring Boot with React 프로젝트 만들기

이전 회사에서 Spring Boot 랑 React.js 가 한 프로젝트에 묶여 있는 환경에서 개발한 경험이 있다. 이미 갖춰진 프로젝트에서 기능을 추가하는 수준이라 React 만 공부해서 개발했었다. 이번에 내가 직접 프로젝트를 구성해보니, 생각처럼 쉽지가 않았다. 이전 프로젝트 구조가 개발과 운영까지 생각해서 빌드 구조가 잘 짜여져 있었는데, 인터넷 검색으로는 그런 수준의 글을 찾지 못했다. 프론트 개발자가 아니라서 조금 어설프지만 나름 원하는 모양새는 갖춰서 정리한다.

2020년 07월 18일

소소하게 오픈소스 기여 경험 정리

사내에 카프카 클러스터를 운영하고 있다. 프로메테우스와 그라파타 조합으로 토픽과 컨슈머 그룹 현황을 모니터링할 수 있게 제공하고 있다. 그런데 가끔 개발자분이 토픽 메시지 확인이 됐으면 좋겠다. 컨슈머가 제대로 토픽에 연결되었는지 확인할 수 있었으면 좋겠다. 등등 이런 저런 기능이 필요하다고 말하는 경우가 있었다. 공식적으로 지원할 계획은 없었고 다른 업무로 바빴지만, 자꾸 생각이 나서 툴이 있나 조사해보니 한달 무료 뒤에 유료 전환하거나 권한 제어가 안되서 토픽 생성, 삭제, 수정이 자유로웠다.

2020년 06월 13일

카프카 파티션 수 설계

카프카에 파티션 수가 늘어날 수록 처리량을 올라가지만, 그에 따른 반작용이 있다. 바로 Latency 증가하고 recovery time 이 늘어난다. 그래서 무작정 파티션 수를 늘리는 것보다, 적절한 목표 처리량을 설정하고 그에 맞춰 파티션 개수를 산정해야한다.

2020년 01월 11일

카프카 튜닝 방안 정리

카프카는 사용하려는 서비스 목적에 따라 성능 목표를 크게 Throughput, Latency, Durability, Availability 네가지로 분류할 수 있다. 각 목표는 상호 trade-off 관계로 모든 목표를 동시에 모두 최적화 할 수 없다.

2020년 01월 04일

GraalVM != Graal

meta-circular 스타일이란 언어를 실행하는 환경과 코드를 개발하는 언어가 같은 스타일을 의미한다. C++로 개발된 HotSpot 은 지난 20년동안 자바 성능을 크게 끌어올렸지만, C++ 코드가 너무 복잡해진 나머지 추가적인 성능 개선이 어려운 상황이다. 그 대안으로 R&D로 개발해온 Maxine VM 이 추구하던 Meta-Circular 자바의 구현체가 바로 GraalVM 이다.

2019년 12월 08일

카프카 디자인

기존 메시징 시스템에서 파일 시스템은 성능 저하를 감수하면서도 메시지의 영속성을 위해서 어쩔 수 없이 사용했다. 그러나 카프카는 메시지를 메모리가 아닌 파일 시스템에 저장하면서도 보다 빠른 성능을 보여준다. 어떻게 이것이 가능한지 알아보자.

2019년 11월 11일

Spring Boot 도커 이미지 최적화

JAVA, 그러니까 Spring Application 을 도커 이미지로 만들어 보면, 500 ~ 700M 사이즈의 이미지가 생성된다. 이는 일반 OS 이미지를 사용하고 필요없는 툴이나 파일까지 포함해서 생성했기 때문이다. 그러나 이를 최적화하면 빌드와 배포 시간을 단축할 수 있다. 최적화에는이미지 사이즈를 줄이고 레이어를 세분화 해서 캐시를 활용하는 두 가지 방법이 있다.

2019년 10월 20일

도커 이미지 생성 가이드

도커 이미지를 생성하려면 도커파일을 작성 해야한다. 도커파일을 작성하는 방법은 매우 다양하고 어떻게 하든 도커 이미지가 만들어지면 배포 할 수 있다. 그래서 중요한게 최적화다. 잘 작성된 도커파일은 도커 이미지 사이즈를 줄이고 빌드/배포 시간을 단축시킨다. 회사에서 클라우드 환경에 도커 기반으로 운영 환경을 바꾸려고 한다. 미리미리 공부 좀 하고 조사한 내용을 정리 해놓아서 실제 사용할 때 삽질하는 시간을 줄여야 겠다.

2019년 10월 19일

JAVA NIO 톺아보기

JAVA I/O 가 느린 이유 자바 I/O 가 느린 이유는 많이 알려져 있다. 첫 번째 이유는 C/C++과 달리 OS 에서 관리하는 커널 버퍼에 직접 접근할 수 없다는 것과 I/O 프로세스를 거치는 동안 작업을 요청한 쓰레드는 블록킹된다는 것이 두 번째 이유다. 자바에서 I/O 를 처리하는 전체 구조를 보여주는 그림에서 자세히 살펴보자.

2019년 09월 07일

Spring Cloud Config 개념 훑어보기

들어가기 Twelve-Factor App 에서 환경 설정 외부화 항목이 있는데, 이를 구현한 여러 컴포넌트 중 Spring 에서는 Spring Cloud Config 를 제공하고 있다. 하지만, 이넘이 Spring Boot 에서만 동작해서 Spring Framework 에서도 사용하기 위해 내부 원리를 파악하고 구현한 내용을 정리해 본다.

2019년 08월 10일

1 2 3 4 »