Monthly Archives: 5월, 2019

Spring Cloud MSA(3) – Service Discovery by Eureka

monolithic 아키텍쳐로 이루어진 시스템은 자원을 동적으로 할당하거나 해제하는 일이 빈번한 환경에서 유연하게 대처하기가 어렵습니다. 예를 들면 로드 밸런싱을 하거나 장애 복구 등이 빈번한 환경을 구축하려면 가용한 서비스 인스턴스에 대한 정보(host, port)를 누군가가 관리하고, 해당 정보를 동적으로 제공할 수 있어야 합니다. 그런데 monolithic 시스템은 처음부터 그러한 점을 고려하여 설계된 시스템이 아니기...

Spring Cloud MSA(2) – Gateway(Routing & Filter) Server by Netflix zuul

이번장에서는 Spring Cloud를 이용하여 Gateway(Routing & Filter)서버를 구축해 보도록 하겠습니다. SpringCloud에서 Gateway는 서로 분산되어있는 서비스들을 하나로 모아주는 관문같은 역할입니다. 기존의 로드밸런서, 리버스 프락시 기존의 리버스...

Spring Cloud MSA(1) – Configuration server 구성

과거에 분산시스템이란 개인이 접근할 수 없는 전문적인 분야로, 복잡하고 정교한 시스템으로 구성되어 있어 개인 개발자 혼자 구축하거나 운영할 수 없는 영역이었습니다. 그러나 Spring Cloud가...

Angular2 정리(6) – HttpClient, Proxy

이번장에서는 외부 리소스를 처리하는 방법에 대해 살펴보겠습니다. Angular는 통신을 위한 HttpClient 모듈을 제공하며, 이를 통해 외부 Rest 서버와 통신하여 리소스를 처리 할 수 있습니다. 외부...

Spring websocket chatting server(1) – basic websocket server

Spring에서 제공하는 Websocket을 이용하여 간단한 채팅 서버를 구현해 보도록 하겠습니다. 일반적인 http통신을 하는 서버들과 달리 채팅 서버는 socket통신을 하는 서버가 필요합니다. 통상적으로 http통신은 Client의 요청이 있을 때만 서버가 응답하고 연결을 종료하는 단방향 통신입니다. 따라서 클라이언트가 서버에 접속해 콘텐츠를 요청하고 결과를 받아 소비하는 구조의 서비스에서 많이 사용됩니다. 그에 반해 socket통신은 Server와 Client가 지속적으로 연결을 유지하고 양방향으로 통신을 하는 방식입니다. 주로 채팅 같은 실시간성을 요구하는 서비스에서 많이 사용됩니다.  Websocket Websocket은 기존의 단방향 HTTP 프로토콜과 호환되어 양방향 통신을 제공하기 위해 개발된 프로토콜입니다. 일반 socket통신과 달리 HTTP 80 Port를 이용하므로 방화벽에 제약이 없으며 통상 Websocket으로 불립니다. 접속까지는 HTTP 프로토콜을 이용하고 그 이후의 통신은 자체적인 Websocket 프로토콜로 통신하게 됩니다. Springboot Websocket 서버 구축 다음과 같이 Websocket서버를 구축합니다. 일반적인 boot구성과 별다를 게 없으므로 쉽게 구축 가능합니다. 신규 프로젝트를 초기 구성하는데 어려움이 있다면...

Redis – Reactive redis

이번 장에서는 Spring2.0의 주요 feature중 하나인 reactor(reactive)가 spring-data-redis에 어떻게 적용되어 있는지 실습을 통해 확인해 보겠습니다. redis에서 reactive를 사용하면 대용량의 요청을 처리할때 non block으로 처리하므로...

Angular2 정리(5) – Validations

이번 장에서는 폼에 입력된 값의 유효성을 체크하는 방법에 대해 실습하겠습니다. Input 필드의 값 유효성 체크 ngModel을 사용해야 하므로 FormsModule을 app.module.ts에 선언합니다. // app.module.ts import { FormsModule } from...

SpringBoot2로 Rest api 만들기(15) – Redis로 api 결과 캐싱(Caching)처리

이번 장에서는 지금까지 개발한 api에 캐시를 적용해 보도록 하겠습니다. 캐시란 자주 사용되는 데이터를 메모리에 저장하고 반환하여 하드디스크의 원본데이터를 거치지 않게 함으로서 리소스 READ시 효율을...

Angular2 정리(4) – Routing, layout component

Angular 프레임웍에서 웹페이지는 컴포넌트의 집합으로 표시됩니다. 또한 웹페이지를 브라우저에서 출력하기 위해서는 유일한 URL이 필요합니다. Angular에서는 이렇게 유일한 URL과 컴포넌트 사이를 맵핑하는 기능을 제공하는데 이것을...

Redis – spring-data-redis : 발행/구독(pub/sub) 모델의 구현

이번장에서는 Redis를 이용한 발행(publish)및 구독(subscribe)모델의 구현 방법에 대해 설명하겠습니다. (이하 pub/sub) pub/sub는 특정한 주제(topic)에 대하여 해당 topic을 구독한 모두에게 메시지를 발행하는 통신 방법입니다.이를테면 날씨정보를...

Apache kafka Installation

CentOS에 Apache Kafka를 설치하는 방법에 대하여 알아봅니다. 공식 홈페이지 https://kafka.apache.org/ https://kafka.apache.org/quickstart java 설치 kafka는 Java기반에서 동작하므로 현재버전 확인 후 Java8 이상을 설치합니다. $ java -version $ sudo yum install...

한정판 오동통면과 함께하는 소확행+수박 좋아

오늘은 요즘 한창 핫한? 라면계의 신성! 오뚜기 오동통면 한정판을 먹어보았다. 다시마의 담백하고 맛있는 국물 + 탄력 있는 오동통한 면발을 앞세워 맛이 아주 좋다고 한다....

Redis – Spring-data-redis : @Cacheable, @CachePut, @CacheEvict, @RedisHash

이번장에서는 spring-data-redis를 이용하여 SpringBoot와 redis를 연동하고, Boot에서 제공하는 Cache 어노테이션을 사용하여 캐시를 처리하는 방법에 대해 실습하겠습니다. builld.gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' ...

thumbor+varnish를 이용한 이미지 처리 서버(thumbnail server) 구축

이번 장에서는 서비스 구축시 클라이언트에게 최적의 이미지를 제공하기 위해 필요한 이미지 처리서버를 구축해 보겠습니다. 현대의 서비스들은 웹, 모바일 웹, android, ios등 다양한 다양한 플랫폼으로...

SpringBoot2로 Rest api 만들기(13) – Jenkins 배포(Deploy) + Git Tag Rollback

Jenkins를 이용하면 배포에 필요한 여러 가지 절차를 통합하여 편리하게 배포할 수 있는 시스템을 만들 수 있습니다. 이번장에서는 Jenkins로 배포시스템을 구축하고 배포 후에 문제가 생겼을...

SpringBoot2로 Rest api 만들기(14) – 간단한 JPA 게시판(board) 만들기

이번 장에서는 지금까지 구축한 SpringBoot + Security 환경에 간단한 JPA 게시판을 추가해 보도록 하겠습니다. 관계 다이어그램은 다음과 같습니다. 하나의 게시판에는 여러 개의 게시물이 작성될 수 있으므로 BOARD와 POST는 1:N의 관계를 같습니다. 회원은 여러 개의 게시물을 작성할 수 있으므로 USER와 POST 역시 1:N의 관계를 같습니다.  Entity 작성 Entity 공통으로 필요한 날짜정보를 담는 CommonDateEntity를 생성하여 Board, Post, User Entity가 상속 받도록 처리합니다. @Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public abstract class CommonDateEntity { //...

Most Read