분류 전체보기
-
Netty 훑어보기Java/No Blocking 2019. 5. 9. 12:23
Netty? Netty 는 서버 및 클라이언트이 필요한 네트워크 어플리케이션을 빠르고 쉽게 개발이 가능하게 해주는 NIO 기반의 서버 프레임워크 이다. 기본적으로 Netty는 비동기 이벤트 드리븐 방식의 프레임워크이다. TCP , UDP 을 모두 지원한다. Netty의 기본 구조 이다. 코어 부분을 보면 이벤트 모델을 가지고 있고 쉽게 사용이 가능하도록 해주는 API 를 제공 하고있으며 zero copy capable rich bytebuffer 라는것을 지원하는데 이 특징으로 인해서 GC 를 최소화 하여 고성능을 보장하게 된다. Netty는 비동기식으로 작동하기때문에 적은 스레드로도 많은 요청 처리 가능하여 서버 자원을 효율적으로 사용이 가능하다. Netty를 쓰는이유? 일단 각종 네트워크 코덱을 기본..
-
CouchbaseNoSql/couchbase 2019. 5. 3. 09:30
Couchbase ? 난 지독할정도로 RDBMS 만 사용한 개발자다 . 경력의 반은 오라클 나머지는 mysql 과 함께 했다고 해도 될거 같다. 한국특성(?) 이라고할지 다녔던 회사의 특성들이 동일해서 그런지 RDBMS 를 쓰고 있는 회사의 사람들중에는 Nosql 에 대한 혐오(?) 라고 해야할까? 그 영향으로 좀처럼 접하기가 힘들었다. 몇만건되는 데이터들을 인덱스문제때문에 고생하고 트래픽이 몰려 감당하지 못해서 DB 가 먹통 직전까지 가는경우를 봤지만 그때마다 사람을 갈아 넣어서 해결하려만 했지 뭔가 다른 수단을 써볼생각을 하는 DB 팀을 본적이 없는거 같다. 하다못해 mysql 도 5.3 에서 0.1 버전업조차 꺼려하는 수동적인 사람들이 태반이였다. 이제 세상도 바뀌었고 빅데이터가 이미 알만한사람들은..
-
JVM( GC) 이해하기Java/Basic 2019. 4. 26. 17:00
GC 자바에서 가비지 콜렉터는 가장 중요한 기능중 하나다 자바 GC 만큼 역사와전통(?) 을 자랑하는 것도 없을거 같다. 기본적으로 C 언어계열들과 차이를 들때(예전... 2000년대 초반.. ) 메모리를 C 계열은 직접 프로그래머가 해줘야 하지만 자바는 JVM 이 알아서 해준다 였다. GC가 그 메모리를 알아서 관리 해주는 녀석이다. GC 란? 자바는 앞서 말했듯이 GC 라는 알고리즘을 통하여 자동 관리 하기 때문에 개발자 메모리를 처리하기 위한 로직이 없고 만들어서도 안된다. 가비지 컬렉터는 자바에서 버리는 객체들을 관리 한다. 하나의 객체를 생성할경우 그에 맞게 메모리가 할당되어 메모리를 점유하게 되고 필요하지 않는경우 메모리를 해제 해야만 메모리누수가 없게 된다. 그렇기 때문에 가비지 컬렉터는 객..
-
BigDecimal (feat. 소수점 계산)Java/Basic 2019. 3. 26. 11:45
자바에서 float,double 로 계산을 해본사람들이 있다면 종종 경험하는 것들이 있다. 두가지 타입이 가진 정밀도 문제로 인하여 내가 원하는 값이 아니라 근사치가 나오는경우를 볼수 있다. 소수점 두자리 끼리 더했는데 갑자기 0.4699999999999 이런식으로 뒤에 99999 가 붙는 경우가 생긴다. 소수점 정밀도에 한계가 있어서 값이 유실 되는경우 발생한다. 보통 integer 형태를 많이 사용하기 때문에 잘 느끼지 못하지만 소수점을 복잡하게 계산하다보면 값은 점점 산으로 간다. 그래서 자바에서 제공하는 변수타입(?) 중 정밀하게 표현할수 있는 유일한 방법인 BigDecimal 을 사용해야 한다. BigDecimal 의 단점은 딱 두가지다 . 느리다 , 사용법이 기본 변수타입보단 좀 불편하다. 일..
-
Vue.js + Spring boot ( Thymeleaf 설정 ) feat.nuxt.jsJavaScript/Vue.js 2019. 3. 26. 11:20
Vue.js 를 이용하여 어느정도 화면들을 만들어 냈다면 이제 dev 서버에서가 아닌 어디서 구동을 시킬지의 대한 선택이 필요하다. 크게 두가지로 나눌수 있다. 프런트 웹서버를 사용하여 구동을 시키거나 백엔드 영역에서 서버사이드에서 구동시키느냐에 따라 구현하는 방식이 다르다. 프런트 서버를 따로 구축할경우 간단하게 Vue.js 에서 서포팅 해주는 nuxt.js 를 사용하면된다. nuxt.js 는 vue2 , vue router, vuex , vue server render , vue-meta 등의 기능을 제공한다. 가장 중요한점은 용량이 53kb 정도 밖에 안되는 아주 가벼운 프레임워크이다. 프로젝트의 모든 UI 렌더링을 nuxt.js 를 통해 사용이 가능하며 간단한 옵션으로 SPA 모드 설정이 가능하다..
-
Spring CloudSpring/Spring Boot 2019. 3. 25. 18:10
Spring boot 를 쓰면서 Spring cloud 에 대한 관심이 아주 높아 졌다. 뭔가 편하게 서포팅 해주려는 의도가 아주 명확하게 잘 들어난 기능이라고 생각한다. 그래서 생각한건 그렇다면 Spring cloud 에서 내가 관심있게 볼만한것들은 무엇이 있을까 하는 것이다. 공식 사이트가 가면 다양한 기능 들이 보인다. (https://spring.io/projects/spring-cloud) 그중 내가 마음에 드는것만 선별 해서 기록하려고한다. 내가 여태 경험했던 것들과 대조해서 앞으로도 사용 할법한것들이나 사용해보고 싶은것들을 정리해놓고 하나하나 시도 해보고 싶다. -Spring Cloud Config git 저장소를 이용하여 설정 리소스를 Spring 에서 자동 매핑하여 반영하는 기능으로 보인..
-
Kafka 기본Devops/Kafka 2019. 3. 11. 17:33
Kafka 데이터를 분산 처리 가능한 데이터 플랫폼 ! 카프카는 메세지큐 서비스로 분산 환경에 특화 되있다고 한다. 보통 많이 알려진 RabbitMQ 와 동일한 역할 포지션이지만 성능에서 많은 차이를 보인다. 그리고 클러스터링 구성이나 fail-over 를 쉽게 할수 있도록 되있다. 카프카를 사용하는 용도는 다양할것으로 보인다. 다양한곳에 사용할수 없다면 나도 관심을 가지지 않았을거 같다. SI 나 작은 회사에서 일정에 쫒겨 정말 아슬아슬하게 외줄타기 하는 일정 에서 일하다보니 신기술이나 내 관심분야에 대한 R&D 는 굉장히 소홀했다. 나스스로의 기술부채가 계속 생긴다는 생각이 든다. 지금 연차에 서비스를 만드냐 못만드냐의 문제는 넘어같거 같다. 잘 만들수있느냐 혹은 오픈소스로 공개된 기술 or 솔루션들..
-
ParameterParser & post 통신JavaScript/JSP 2019. 2. 28. 16:49
ParameterParser getStringParameter vs HttpServletReqeust getParameter() 기존의 레거시 프로젝트가 jsp 안에 html+js+java 가 다 있는 형태이다. 스프링하면서 mvc 에 병적으로 집착하면서 구조를 어떻게든 깔금하게 분리해서 관리하려는 나로써는 정말 세상 최악의 구조이다. 그래도 담당자가 되었기에 유지보수는 하고 있다. 이전 개발자가 ParameterParser 를 사용하여 파리미터 전달 받은 값을 사용하도록 개발을 해놓은것같다. ParameterParser는 명확하게 값이 없을 경우 자신이 정한 디폴트 값을 넣어줄수있는 편리함때문에 사용하는것에 대해선 아주 괜찮은거 같았다. String strGameIndex = request.getPar..