Home 2019

Archives

인기 글

SpringBoot2로 Rest api 만들기(8) – SpringSecurity 를 이용한 인증 및 권한부여

63
이번 시간에는 SpringSecurity를 이용하여 api 서버의 사용 권한을 제한하는 방법에 대해 알아보도록 하겠습니다. 지금까지 개발한 api는 권한 부여 기능이 없어 누구나 회원 정보를 조회,...

Spring websocket chatting server(1) – basic websocket server

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

SpringBoot2로 Rest api 만들기(1) – Intellij Community 프로젝트생성

0
Intellij에서 SpringBoot2를 실습하기 위한 가장 기본적인 설정을 진행해보겠습니다. 프로젝트의 진행은 Intellij Community 버전으로 진행합니다. 다음 사이트에서 Intellij Community 버전을 다운로드하여 설치해 주십시오. https://www.jetbrains.com/idea/download Create New...

Spring websocket chatting server(2) – Stomp로 채팅서버 고도화하기

6
이전 장에서 websocket을 통하여 간단한 서버/클라이언트 통신을 구현해 보았습니다. 메시징 방식을 잘 정의한다면 websocket만으로도 충분히 좋은 서버/클라이언트 소켓 서버를 완성할 수 있습니다. 하지만 단순한 통신 구조로 인해 Websocket만을 이용해 채팅을 구현하면 해당 메시지가 어떤 요청인지, 어떻게 처리해야 되는지에 따라 채팅룸과 세션을 일일이 구현하고 메시지 발송 부분을 관리하는 추가 코드를 구현해 줘야 합니다.  이번 장에서는 Websocket의 프로세스를 좀 더 고도화하고 메시징에 좀 더 최적화된 방식을 구현하기 위해 Stomp를 적용해 보겠습니다. Stomp Stomp는 메시징 전송을 효율적으로 하기 위해 나온 프로토콜이며 기본적으로 pub/sub 구조로 되어있어 메시지를 발송하고, 메시지를 받아 처리하는 부분이 확실히 정해져 있기 때문에 개발하는 입장에서 명확하게 인지하고 개발할 수 있는 이점이 있습니다. 또한 Stomp를 이용하면 통신 메시지의 헤더에 값을 세팅할 수 있어 헤더 값을 기반으로 통신 시 인증처리를 구현하는 것도 가능합니다. pub/sub란 메시지를 공급하는 주체와 소비하는 주체를 분리하여 제공하는 메시징 방법입니다. 기본적인 콘셉트를 예로 들면 우체통(topic)이 있으면 집배원(publisher)이 신문을 우체통에 배달하는 액션이 있고, 우체통에 신문이 배달되는 것을 기다렸다가 빼서 보는 구독자(subscriber)의 액션이 있습니다. 여기서 구독자는 여러명이 될 수 있습니다. pub/sub 콘셉트를 채팅룸에 대입하면 다음과 같습니다.  채팅방을 생성한다 - pub/sub 구현을 위한 Topic이 하나...

소나큐브(Sonarqube)를 통한 코드 분석 및 코드 품질 향상

0
소나큐브는 지속적으로 코드의 품질을 높이고 유지 보수하는데 도움을 주는 정적 분석 애플리케이션입니다. 분석 기능이 탁월하고 개선사항도 자세하게 안내해 줍니다. 간단하게는 코딩 컨벤션부터 코드의 잠재적인 위험 사항까지 안내해주어 올바른 코딩 습관과 코드의 품질향상에 많은 도움을 줍니다. Sonarqube features Linux, Window, Mac 등 다양한 환경에서 모두 구동이 가능합니다. 20개가 넘는 프로그램 언어에 대한 코드 분석을 지원합니다. 개발된 코드의 품질을 어드민을 통해 확인해 볼 수 있고 지속적으로 관리가 가능합니다. 품질 게이트를 통해 표준화된 코드 품질 요구사항을 설정할 수 있습니다. Jenkins 같은 CI엔진과 통합되어 분석이 가능합니다. IDE와 연동되는 다수의 Plugin을 통해 분석이 가능합니다.  다운로드 및 설치 https://www.sonarqube.org/downloads/ 에서 다운로드하고 압축을 해제합니다. 소나큐브 서버 실행 실습은 윈도우 환경하에서 진행합니다. 서버 실행 후에는 어떤 플랫폼이든 사용에 별 다른 점은...