Monthly Archives: 4월, 2019

SpringBoot2로 Rest api 만들기(12) – Deploy & Nginx 연동 & 무중단 배포 하기

이번 장에서는 SpringBoot 프로젝트를 실제 AWS EC2 서버에 배포하고 Nginx와 연동하여 서버를 실행해 보는 실습을 하겠습니다. 이번 실습에서는 AWS에 EC2서버를 ssh로 접속할 준비가 되어있거나...

SpringBoot2로 Rest api 만들기(11) – profile을 이용한 환경별 설정 분리

이번장에서는 기존에 단일 파일로 관리되던 스프링 설정을 서버 환경에 따라 다르게 적용되도록 개선해보겠습니다. 환경별 application.yml의 분리 /resources 아래에 application.yml을 복사하여 application-alpha.yml, application-local.yml 두개를 더 만듭니다. 개발...

잉여 세차러의 자동차 세차용품 사용기

집안에서 뒹굴고 있는 세차 용품을 정리해본다. 나름 유튜브에서 세차 콘텐츠를 보고 나도 열심히 셀프세차해야겠다고 결심하고 마련했지만... 육아 및 게으름으로 몇 번 써보지도 못하고 창고에서 잠들어 있는 아이들이다...ㅜㅜ 나는 프로세차러 가 아니므로 아래 정도만 구비해서 다니고 있다. 버킷도 2개 사서 투버킷 세차를 해보겠다고 한 건데. 한번 투버킷 세차 해본이후 이건 나의 길이 아니다 라고 생각하고 포기했다. 나의 체력으로 두 버킷 세차는 무리였다. --;; 18리터짜리 버킷 하나로도 나의 세차는 충분하다.... 가성비가 좋은 플래시 퀵 디테일러. 나에게 왁스질은 무리라고 생각하여 마련한 물 왁스. 뿌리고 쓱쓱 닦으면 끝난다.  플래시 유리세정제. 가성비 좋고 그냥저냥 쓸만하다. 어차피 세차하고 나서 깨끗한 상태에서 하는 거라 효과는 잘 모르겠다. 플래시 휠 클리너. 휠에 쓱쓱 분사해주고 몇 분 기다렸다가 물로 헹궈주면 된다. 휠 닦는 솔도 샀지만 역시 귀차니즘에 안 쓰게 된다. 욕심이...

Angular2 정리(3) – 컴포넌트간 데이터 전달( @Input, @Output, Observable )

Angular는 화면을 구성하는 최소 단위가 컴포넌트입니다. 클라이언트에게 보이는 최종 화면은 하나의 html로 보이지만, 내부적으로는 여러 개의 컴포넌트들로 이루어져 있을 수 있습니다. 따라서 컴포넌트 간에 데이터를 교환해야 하는 이슈가 발생할 수 있습니다.  이번 장에서는 컴포넌트간에 데이터를 교환하는 방법에 대해 알아보겠습니다. 부모 -> 자식 컴포넌트로의 데이터 전달 parent, child 컴포넌트 2개를 생성합니다. $ ng g c...

AWS EC2 – install nginx, mariadb

AWS EC2에 nginx와 mariadb를 설치하는 방법에 대하여 정리합니다. 서버 타임존 변경 aws는 기본적으로 os설치시 타임존이 UTC로 맞춰져있으므로 nginx/mariadb 설치전에 TimeZone을 변경해 줍시다. $ date 2019. 04. 30. (화)...

Redis – SpringBoot2 redis cluster : strings, lists, hashs, sets, sortedsets, geo, hyperloglog

SpringBoot2와 redis cluster를 연동하고, redis command에 대해 설명합니다. 다음을 참고하여 프로젝트를 하나 생성합니다.>> Intellij Community 프로젝트생성 Boot를 실행하기 위한 Application Class 생성 package com.redis.cluster; @SpringBootApplication public class RedisClusterApplication...

OpenJdk 설치, 삭제, 업데이트

Oracle에서 Java를 유료화 하면서 상업적인 목적의 서버에 Java를 설치하고 사용할 경우 주의해야 합니다. 로컬 PC에서의 개발은 oracle, openjdk 상관없이 사용해도 문제가 없지만, 서버 환경에서의...

기술 용어 및 개념 정리 모음

GC란? 가비지 컬랙션이란 힙에서 참조되지 않는 객체들을 탐색 후 삭제하는 과정으로 삭제된 객체의 메모리를 반환하여 힙 메모리를 재사용할 수 있게 하는 것이다. 힙 영역의 객체 중 stack의 변수와 연결이 끊겨 도달 불가능한 인스턴스들은 가비지 컬랙션의 대상이 된다. MinorGc Young영역(Eden + Survivor1 + Survivor2)에서 이용하지 않는 메모리가 지워지는 과정을 MinorGc라 한다.새로 생성한 대부분의 객체는 Eden영역에 위치한다.Eden 영역에서 Gc가...

Docker로 빠르게 개발환경 구성하기(mysql, redis, rabbitmq, mongoDB)

이번 시간에는 docker를 이용하여 로컬PC에 개발환경을 빠르게 구성하는 방법에 대하여 실습하겠습니다. 일반적인 웹서비스 구축시 DB로는 Mysql, MongoDB를 캐시 서버로는 Redis를 그리고 메시지큐로는 RabbitMQ를...

Angular2 정리(2) – Hello Angular 및 기본개념설명

앞서 환경이 구축되었다는 가정하에 Angular 프로젝트를 생성합니다. 터미널에서 ng명령어를 통해 Angular 프로젝트를 생성하고 아래와 같이 서버를 실행합니다. // ng new 프로젝트명(소문자와 '-'만 이용하여 생성) $ ng...

Angular2 정리(1) – 설치 및 개발환경 구축

Angular란? Node기반의 완전하고 독립적인 웹 프런트 프레임워크로서, 체계적이고 구조화된 개발 방법 및 환경을 제공합니다. 기존의 웹 개발은 백엔드 서버와 강 결합된 상태의 템플릿 엔진 기반의 개발 방법이 주류였습니다. 웹 개발 환경은 꾸준히 발전해 왔지만 이러한 백엔드 서버의 부가적인 요소로서의 웹 개발은 비효율 적이고, 백엔드 서버의 바운더리 안에서는 더 이상 발전하기 힘든 상황에 직면하였습니다.  Angular를 비롯한 여러 가지 프런트 프레임워크의 주요 목표 중 하나는 html, javascript, css를 통한 웹 개발 시 백엔드 개발 이상의 개발 생산성을 확보하는 것입니다. Angular를 사용하면 개발면에서 상당히 논리적이고 편리한 개발환경을 제공한다는 것을 알 수 있습니다.  뭐가 다른가? 웹 개발을 위한 전용 프레임워크로서, node 기반으로 서버가 실행되며 별도의 백엔드 서버의 부가 요소로서 개발환경을 구성하지 않습니다.(ex. Spring-Freemarker-tomcat) npm명령을 제공하여 쉽게 개발 환경을 구축할 수 있어 기존의 환경보다 놀라운 접근성을 제공합니다.  html, css, typescript 파일로 구성되는 컴포넌트 생성을 통해 기능에 따라 웹 화면을 완전히 독립적으로 실행되는 모듈로 만들 수 있습니다.  Typescript의 사용을 통해 여러 가지 이점을 가지고 개발할 수 있습니다. ( 컴파일을 통한 실행 전 오류 검출, 클래스, 인터페이스, 상속 등 객체지향 프로그래밍 지원, 타입 지정을 통해 데이터의 타입에 따른 오류 처리가 필요 없고, 타입 유추가 가능하여 컴파일 단 오류 검출이 가능.) 막강한 자동완성 기능을 제공하여 웹 개발 시 생산성을 향상할...

Java Optional 사용법

Java8에서 도입된 Optional에 대하여 살펴보겠습니다. Optional class의 목적은 null 참조 대신 Optional value로 표현되는 형식의 솔루션을 제공하는 것입니다. 즉 이전 버전까지의 Java의 고질적인 문제였던...

Python으로 Redis cache 일괄 삭제 프로그램 만들기

이번 실습에서는 Redis key 일부를 입력받아 연관된 캐시를 찾아 삭제해주는 프로그램을 작성해 보겠습니다. 개요 현업에서 Redis는 DB 캐시로 사용하는 경우가 많습니다. Redis를 사용하면 DB 부하를 많이...

Java Stream 실습 코드 정리

개발에서 자주 사용하는 Java stream 예제 코드 정리 // 배열 스트림 String strArr = new String{"one", "two", "three", "four", "five"}; Stream<String> stream = Arrays.stream(strArr); assertThat(stream.collect(Collectors.toList()), contains("one", "two",...

Spring Boot Oauth2 – ResourceServer : 비대칭키를 이용한 서명(asymmetric keys to do the signing process)

이번 시간에는 인증서버와 리소스 서버간에 토큰 인증시 서명 방식을 변경해 보겠습니다. 서명이란 서로간에 신뢰성있는 통신을 하기 위한 절차라고 생각하면 됩니다. 최신 소스는 아래...

학창시절 추억의 중국 무협영화 그리고 마영성의 풍운(風雲)에 대하여

남자라면 한 번쯤 학창 시절, 아니 학창 시절이 아니라도 일생에 한 번쯤은 무협에 푹 빠져 지냈던 시기가 있으리라 생각한다. 나는 80~90년대 홍콩 무협 영화를 어린 시절 비디오로 접했던 추억을 가지고 있는, 이제는 중년에 들어선 나이가 너무 적지도 많지도 않은 그런 나이 때의 사람이다. 천녀유혼 왕조현을 흠모했던. 이제는 아재가 돼버린 세대다. 그리고 이제 고인이 되어버린 장국영 형님도..ㅜㅜ 임청하 누님도 최애 배우중 하나였고, 무술 영화의 주인공으로서 많은 이름을 날렸던 이연걸의 팬이기도 했다. 연결형님은 이제 병마에 시달리시고...

Spring Boot Oauth2 – ResourceServer

이번 장에서는 Spring Oauth2를 이용한 ResourceServer(api서버) 구축을 실습해보겠습니다. 이전 장에서 만든 AuthorizationServer와 연동하여 실습은 진행됩니다. 실습은 bearer 토큰 방식부터 진행합니다. 최신 소스는 아래 GitHub...

Redis – cluster

Redis single instance 구성에 이어 cluster를 구성하는 방법을 실습해 보겠습니다. Cluster란 각기 다른 서버를 하나로 묶어 하나의 시스템처럼 동작하게 함으로써 클라이언트에게 고가용성을 제공하는 것을 말합니다....

Windows10 OpenSSH 클라이언트 활성화, 개발자 모드 + Ubuntu Linux 활성화

Windows10 최신 버전부터 윈도우상에서 ssh명령어를 지원하거나, Ubuntu Linux를 사용할 수 있도록 기능을 제공하기 시작하였습니다. 기존 윈도우 환경에서는 개발자가 리눅스나 Mac 환경처럼 서버 개발을 하기가...

Spring Boot Oauth2 – AuthorizationServer : DB처리, JWT 토큰 방식 적용

앞 장에서는 테스트를 위해 메모리에 정보를 올려놓고 테스트하였으나, 이번에는 DB를 사용해 처리할 수 있도록 개선해 보겠습니다. 최신 소스는 아래 GitHub 주소를 참고해 주세요. https://github.com/codej99/SpringOauth2AuthorizationServer.git 클라이언트...

Most Read