분류 전체보기(363)
-
IntelliJ - 대/소문자 구분없이 자동완성(Code Completion)
최근까지 사용하던 이클립스를 제껴두고 인텔리제이를 써보려하는데, 익숙치 않아서 불편한 점이 한둘이 아닙니다. 천천히 하나하나 정리해볼 겸 오늘은 대/소문자 구분없이 자동완성하는 설정을 다루어보려합니다. Preferences 메뉴 탭을 눌러줍니다. Editor->General->Code Completion tab으로 들어간 이후에 가장 맨위 Match case 부분의 체크를 풀어줍니다. 짠 소문자로 시작해도 자동완성이 완료됩니다. 아직 가야할 길이 멀은 인텔리제이.. 언제쯤 이클립스처럼 편하게 사용할 수 있을까
2019.09.13 -
DB - MongoDB 샤딩(Sharding,분산처리 등)
샤딩(Sharding)은 데이터를 여러 서버에 분산해서 저장하고 처리할 수 있도록 하는 기술을 말한다. MongoDB의 복제와 샤딩은 상호보완적이지만 엄연히 목적이 다르다. 복제는 고가용성을 위한 솔루션이며 샤딩은 분산 처리를 위한 솔루션이다. 그래서 몽고디비는 고가용성과 대용량 분산 처리를 위해 복제와 샤딩을 모두 적용한다. 몽고디비에서 샤딩을 적용하려면 샤드 클러스터를 구축해야 하는데, 이를 위해서는 파티션된 데이터의 범위와 샤드 위치 정보 등의 메타 정보를 저장하기 위해 컨피그 서버(Config Server)가 필요하다. 그리고 응용 프로그램이 필요한 데이터를 조회하거나 저장하려면 "mongos"라는 라우터 서버(Router Server)가 필요하다. 라우터는 쿼리 수행에 있어서 프록시(Proxy)..
2019.09.12 -
DB - MongoDB 복제(Replica-set,프라이머리,세컨드리,아비터노드)
몽고디비(MongoDB)에서는 마스터-슬레이브 복제와 레플리카 셋 복제라고 하는 두 가지 방식의 복제를 지원한다. 마스터-슬레이브 복제는 몽고디비가 만들어졌던 초기에 사용하던 복제 방식으로, 몽고디비3.2 버전에서는 권장하지 않는 방식이다. 또한 마스터-슬레이브 복제 방식은 마스터의 장애에 대한 페일오버를 관리자가 수동으로 처리해야 하며, 최근 버전의 몽고디비에서는 거의 기능이 개선되거나 보완되지 않고 있다. 그에 반해서 레플리카 셋 복제는 안정되고 많은 부분 자동화되어 처리될 수 있게 개발됐다. 복제란? 복제는 여러 서버가 서로의 데이터를 동기화하는 것을 의미하는데, 서로 주고받는 데이터에 따라서 논리 복제와 물리 복제로 나눌 수 있다. DRBD(Distributed Replicated Block De..
2019.09.12 -
DB - MongoDB란?(NoSQL,Document)
요즘 시대에는 구글이나 페이스북과 같은 글로벌 서비스를 제공하는 회사가 늘어나면서 방대한 양의 데이터를 충분히 빠른 속도로 처리할 수 있는 데이터베이스에 대한 필요성이 대두되기 시작했다. 이런 대용량 데이터 서비스에서는 기존의 RDBMS에서 처리하기는 힘들다.(비용적인 문제, 데이터를 분산하기 위해 수십,수백대의 서버로 분산시켜야함) 물론 MySQL 같이 오픈 소스 RDBMS는 비용적인 문제를 해결해주기는 하였다. 하지만 이러한 MySQL도 빅데이터를 처리하기에는 문제가 있다. 만약 엄청난 양의 데이터가 있고, 매번 데이터베이스 스키마에 맞게 데이터를 조작하여 작업을 해야한다면 얼마나 비효율적이고 힘든 작업일까.. 여느 NoSQL과 같이 MongoDB는 이러한 문제를 해결하기 위해 적합한? 데이터베이스이..
2019.09.12 -
일상 - TODO List, 앞으로 공부해야 할 것들.
새로운 회사 입사를 앞두고 공부해야 할 것, 공부하고 싶은 것들 정리. 언어 Scala Kotlin Python 데이터 Kafka(Stream) Elasticsearch Hadoop Hive Spark 그 외 NoSQL(MongoDB..) Docker, Kubernetes MSA 열심히 해도 아직까지도 부족한 것들이 많다. IT에는 왜 이렇게 많은 기술들이 많을까? 아예 이런 것들을 하나로 패킹한 대단한 솔루션이 어디 없을까..박학다식이란 힘든 일이다.
2019.09.12 -
Spring - Spring Cache 추상화(스프링 캐시 추상화),@Cacheable,@CacheEvict,@CachePut
이번에 다루어 볼 포스팅은 Spring Cache이다. 스프링 3.1부터 빈의 메서드에 캐시 서비스를 적용할 수 있는 기능을 제공한다. 캐시 서비스는 트랜잭션(@Transaction)과 마찬가지로 AOP를 이용해 메서드 실행 과정에 우리가 모르도록 투명하게 적용된다. 또한 스프링은 장점으로 캐시 서비스 구현 기술에 종속되지 않도록 추상화된 서비스를 제공해주므로 환경이 바뀌거나 구현 기술이 바뀌어도 우리가 적용한 코드의 변경 없이 구현 기술을 바꿔줄 수 있다. 그렇다면 여기서 짚고 넘어갈 것이, "애플리케이션 빈의 메서드에 캐시를 적용하는 이유 혹은 목적"은 무엇일까? 캐시는 기본적으로 성능의 향상을 위해 사용한다. 여기서 성능 향상은 애플리케이션이 갑자기 막 빨라지고 하는 성능 향상이 아니다. 어떤 요청..
2019.09.11