목록ETC (6)
나의 개발 일상 기록
SockJS 1. WebSocket란? WebSocket은 기존의 단방향 HTTP 프로토콜과 호환되어 양방향 통신을 제공하기 위해 개발된 프로토콜입니다. 일반 Socket통신과 달리 HTTP 80 Port를 이용하므로 방화벽에 제약이 없으며 통상 WebScoket으로 불립니다. 2. SockJs란? SockJs는 WebSocket과 유사한 객체를 제공하는 브라우저 JavaScript 라이브러리입니다. SockJs는 브라우저 웹 서버 사이에 짧은 지연 시간, 도메인 간 통신 채널을 생성하는 일관된 브라우저 간 JavaScript API를 제공합니다. Sping Boot WebSocket 발송된 메시지 처리 1. pom.xml 설정 pom.xml에 spring-boot-starter-websocket을 의존..
Firebase Cloud Message 1. FCM(Firebase Cloud Message)이란 FCM은 Firebase Cloud Message으로, 앱 서버에서 구글에서 제공하는 FCM을 이용하여 사용자 디바이스가 설치된 앱 단위로 메시지를 전송할 수 있는 서비스로, Firebase콘솔이나 서버에서 푸시를 보낼 수 있습니다. 2. FCM 아키텍쳐 메세지 요청을 작성하거나 구현하는 도구의 역할을 합니다. FCM 백엔드는 다른 기능 중에서 메시지 요청을 수락하고, 주제를 통해 메시지를 확장하고, 메시지 ID와 같은 메타데이터를 생성합니다.. 기기로 타겟팅된 메시지를 라우팅하고, 메시지 전송을 처리하고, 필요한 경우 플랫폼별 구성을 적용하는 플랫폼 수준의 전송 레이어입니다. 알림이 표시되거나 앱의 포그..
Caching 적용 1. Cache를 적용할 대상 반복적으로 동일한 결과를 나오는 기능의 반환값 서버 자원을 많이 사용하는 작업 또는 시간이 오래 걸리는 작업 (API 호출, 데이터베이스 조회 쿼리 등) 자주 조회되는 데이터 입력값과 출력값이 일정한 데이터 캐싱된 데이터는 데이터 갱신으로 인해 DB와 불일치가 발생할 수 있습니다. 그렇기 때문에 데이터 Update가 잦게 일어나거나 데이터 불일치시 비즈니스 로직 상 문제가 발생할 수 있는 기능은 캐싱 대상으로 적합하지 않습니다. 2. Local Cache vs Global Cache Local Cache Local Cache란 캐시 전략 중에 하나이며 서버에 저장하는게 아닌 클라이언트 로컬 영역에 캐시 데이터를 저장하는 것을 의미합니다. Local Cac..
REST API 1. Rest란? 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미합니다. 자원은 소프트웨어가 관리하는 모든 것을 의미합니다. 예를 들면 DB안에 들어가 있는 데이터 하나하나, 이미지 하나하나 등을 의미할 수 있습니다. 상태(정보)전달은 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달하는 것을 의미하는데 일반적으로 JSON 혹은 XML를 통해 데이터를 상태를 전달합니다. REST의 구체적인 개념은 HTTP URL을 통해 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 CRUD 오퍼레이션을 적용하는 것을 의미합니다. 2. Rest 특성 - Server-Client(서버-클라이언트 구조) REST S..
AOP 적용하여 부가적인 로직 제거하기(SPRING BOOT) 1. AOP를 사용하는 이유 spring에서는 AOP라는 기능이 존재합니다. 흩어져있는 공통 기능들에 대해서 하나의 관점으로 바라보도록 해주며 사용자가 원하는 지점에서 실행할 수 있도록 해줍니다. AOP 사용 시 소스에 대한 관리가 더 용이해지는 장점이 있습니다. 간단한 메소드 성능 검사, 트랜잭션 처리, 예외 반환, 로깅, 인증, 권한 등 AOP를 통해 구현할 수 있습니다. 본문에서는 커스텀 어노테이션을 활용하여 해당 어노테이션이 명시된 메소드를 실행하기 로그인 권한을 확인하는 기능을 구현해보겠습니다. 2. AOP를 사용하기 전 사전 작업 AOP를 사용하기 전에 pom.xml에 spring-boot-starter-aop 을 의존성 주입을 해..
서버확장을 위한 대표적인 두가지 방법 서버 확장 개념에 대해서 학습을 하고자 구글링을 통해 서버 확장을 하는 대표적인 2가지 방법에 대해서 알게되었습니다. 대표적으로 SCALE UP 과 SCALE OUT 두 가지 방법으로 나누어지게 됩니다. 서버 확장 같은 경우 서버를 운영을 하다보면 갑작스런 사용자의 증가 및 사업 확장 등의 많은 이유로 더 많은 서버 용량과 성능이 필요하게 됩니다. 이와 같은 경우 SCALE UP, SCALE OUT 방식 중 구현한 환경에 따라 어떤 방법이 합리적인 방법인지 고려하여 인프라를 재구성 해야 합니다. 1. SCALE UP 위의 그림과 같이 SCALE UP 경우 서버 자체의 성능을 증걍시키는 것을 확인할 수 있습니다. 서버의 자체를 증강시킴으로써 서버의 처리 능력을 향상하는..