ohjongsung's Dev Story

Ohjongsung's Dev Story

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일

CAP 이론과 PACELC 이론

CAP 이론은 분산 데이터베이스 시스템에서 의미있는 이론이다. 분산 데이터베이스의 세 가지 속성인 일관성(Consistency), 가용성(Availability), 네트워크 파티션 허용(Partition tolerance)을 나타낸다. 처음 CAP 이론이 발표된 후, 시간이 지나면서 이론의 허점이 발견되었고 이를 보완하는 PACELC 이론이 나오게 된다.

2019년 05월 01일

NoSQL에서 스키마 변경과 마이그레이션

NoSQL에서 스키마를 변경한 경우, 모든 문서를 건 바이 건으로 변경된 스키마를 반영한다고 생각해보자. 저장된 데이터의 양이 작다면 순식간에 끝날 것이다. 그러나 데이터의 양이 많아서 며칠이 걸린다면? 중간에 에러가 발생해서 중단되면? 스키마 마이그레이션 작업의 부하가 크다면 어떻게 해야 할까? 이 글을 통해서 NoSQL의 스키마 변경을 어떻게 반영하는지 알아보자.

2019년 03월 01일

Windows 10 Pro 에 Docker 와 Mysql 설치

윈도우 10 Pro에 도커를 설치하고 mysql 컨테이너를 뛰워보자. 먼저 알아둬야 하는 점은 윈도우 10 Home 이하 버전과 윈도우 10 Pro 이상, 즉 윈도우 서버와 같은 환경은 설치 방법이 다르다는 것이다. 그래서 자신의 윈도우 환경이 10 Home 이하인 경우, 이 글을 더 이상 읽지 말고, Docker Tool Box 설치 방법을 찾아 보길 바란다.

2018년 11월 25일

카우치베이스 다차원 스케일링 - Couchbase Multidimesional Scaling

보통 NoSQL이라고 하면 분산형 구조에 수평 확장에 용이하다고 하는데, 카우치베이스 또한 그렇다. 덕분에 부하 분산도 잘 되고 노드 장애에 대한 대처나 노드 추가도 쉽다. 그리고 memcached를 자체적으로 사용하고 있어서 캐시급 성능을 낸다.

2018년 10월 07일

1 2 3 4 »