본문 바로가기

STUDY/기타

(6)
Flyway를 활용한 DB Migration 자주 겪는 일 일반적으로 소스, 서버, DB 등 서비스 환경은 개발, 검증, 운영으로 나누어져 있다. 개발자들은 이렇게 나누어진 환경 때문에 번거로운 과정들을 거쳐야 한다. 프로젝트를 진행하다 보면 기존의 소스와 테이블을 바꾸어야 하는 경우가 자주 발생 한다. 실제로 이전에 진행했던 프로젝트에서는 기획 변경으로 인해 필요한 데이터가 바뀌면 1) 로컬의 소스와 DB를 수정하여 작업하고, 2) 개발계 DB 수정을 요청하고, 개발계에 소스를 올리고 배포한 후, 3) 검증, 운영계도 같은 과정을 수행하였다. 하지만 위와 같은 과정들은 번거로운 뿐더러 여러 문제를 발생시켰다. 담당자가 직접 DB를 수정하다보니 실수로 계획한 것과 다르게 반영되어 장애가 발생하거나, DB 담당자 부재시 소스 배포도 함께 불가능해지..
Jest와 React Jest란 가장 대표적인 JavaScript 테스트 프레임 워크이다. Jest 이전에는 JavaScript 테스트에 필요한 Test Runner(mocha), Test Matcher(sinon), Mocking(test mock) 라이브러리들을 조합하여 테스트를 진행해야 했다. 하지만 Jest는 All-in-one 테스트 프레임 워크로서 쉽게 구성하고 사용할 수 있다. CRA(Create React App)에서의 Jest Jest를 사용하기 위해서는 관련 라이브러리와 스크립트 설정등 화녕 구성이 필요하지만 CRA로 만들어진 react 앱에는 모든 내용이 포함되어있다. 그리고 App의 테스트 코드가 들어있는 App.test.ts까지 만들어져 있다. import React from 'react'; impor..
교차 출처 리소스 공유 (CORS) : 개발자라면 한번은 보았던 것 동일 출처 정책(Same-Origin Policy) 사이드 프로젝트를 진행하다보면 자주 보는 것이 하나있는데 바로 CORS 에러다. CORS 에러는 브라우저의 동일 출처 정책(Same-Origin Policy)을 위반하면 발생하는 에러인데, 여기서 동일 출처란 프로토콜, 호스트(도메인), 포트가 모두 같은 것을 말한다. 'http://mypage:8080'에서 요청을 보낸다고 했을 때, 동일 출처 정책을 위반한 경우는 아래와 같다. https://mypage:8080/v1/api/product/list로 요청을 보낸 경우 > 프로토콜 불일치 http://yourpage:8080/v1/api/product/list로 요청을 보낸 경우 > 호스트(도메인) 불일치 https//mypage:8090/v1/api..
CSR 시대의 동적 크롤링 with Selenium Server Side Rendering / Client Side Rendering SSR(Server Side Rendering)이란 사용자에게 보여질 페이지가 서버에서 완성되어 전달되는 것을 말한다. 클라이언트(브라우저)는 그저 서버로 부터 받아온 정보를 사용자에게 그대로 보여주기만 하면 충분하다. SSR은 클라이언트의 성능에 크게 영향을 받지 않고, SEO 측면에서도 장점이 있다. CSR(Client Side Rendering)은 사용자에게 보여질 페이지가 클라이언트(브라우저)에서 만들어지는 것을 말한다. 서버는 완성된 HTML 파일이 아니라, 이를 만드는데 필요한 스크립트 코드와 관련 정보들을 반환한다. 클라이언트는 이를 자체적으로 스크립트를 실행하여 비어있는 HTML 코드들을 완성시킨다. CSR은..
채팅을 위한 노력의 역사 그리고 WebRTC 웹에서 기본적으로 클라이언트와 서버의 통신은 HTTP 방식으로 이루어진다. 클라이언트는 필요에따라 서버에 요청을 보내고 서버는 요청에 대한 응답을 보낸다. HTTP의 특징인 "단방향성"과 "비연결성"은 위와 같은 일반적인 웹상황에서 부족함이 없었다. 하지만 웹이 발전하고 풍부해짐에 따라 문제가 발생했다. 이제 사람들은 단순히 웹에서 정보 조회 뿐 아니라 사람들과 소통하고 싶어했고, 서비스 제공자들은 웹에서 채팅기능을 추가하고 싶었다. 하지만 지금까지 문제 없었던 "단방향성"과 "비연결성"이 발목을 잡았다. 처음 사람들이 생각해낸 방법은 짧은 주기로 계속 요청을 보내는 것이다(이를 Polling Request라고 부른다). 예를들어 1초마다 새로 올라온 채팅내역이 있는지 계속 요청하는 것이다. 이를 통해 ..
Java 8 ~ 11 버젼별 특징 1. Java 1.8 2014년 3월 발표. 일반 지원은 2019년 1월에 종료되었고, 연장 지원은 2030년 12월에 종료될 예정이다. 1) Interface static And default method 본래 Interface는 함수의 구현체 즉 body를 가질 수 없었다. 하지만 Java 1.8 부터는 인터페이스에 body를 가지는 static method와 default method가 추가되었다. // JavaInterface.java public interface JavaInterface { static public String interfaceStaticMethod() { return "interfaceStaticMethod"; } } // main 영역 public static void ma..