거꾸로 바라본 세상
[Kafka] Intro. Messaging System
Back-End/Kafka 2023. 4. 24. 09:18

Messaging System Messaging System은 하나의 프로그램에서 다른 프로그램으로 데이터를 전달할 수 있도록 돕는 시스템이다. Messaging System의 기본 원칙 Loose Coupling(느슨한 연계) : Application 상호간에 의존성을 최소화 하는 것으로 한쪽에서 변경이 발생할 경우 다른 프로그램은 영향을 받지 않는 것. Common Interface(공용 인터페이스 정의) : Application간에 데이터를 교환하기 위해 공용으로 규정된 데이터 형식을 정의한다. Latency(응답속도) :메시지 전송부터 수신까지의 소요시간을 말한다. reliability(신뢰성) : 일시적인 가용성 문제가 발생해도 정보를 교환하는 Application에는 영향을 주지 않는다. 기본..

article thumbnail
[OAuth] Oauth 2.0
Security/OAuth 2023. 4. 21. 09:34

OAuth 2.0 OAuth 2.0은 OAuth 1.0의 단점을 개선한 것으로, OAuth 1.0은 웹 애플리케이션이 아닌 애플리케이션에서는 사용하기 곤란하다는 단점이 있다. 그리고 절차가 복잡하여 OAuth 구현 라이브러리를 제작하기 어렵고, 복잡한 절차 때문에 Service Provider에게도 연산 부담이 발생한다. OAuth 1.0과 OAuth2.0의 차이 인증절차의 간소화로 인해 개발자가 구현하기 쉬워짐 기존에 사용하던 용어도 바뀌면서 Authorization Server와 Resource서버의 분리가 명시적으로 되었다. 다양한 인증방식을 지원 OAuth 2.0의 특징 인증절차 간소화 기능을 단순화했으며 기능과 규모의 확장성 등을 지원한다. OAuth 1.0은 디지털 서명 기반이지만 OAuth ..

article thumbnail
[OAuth] OAuth
Security/OAuth 2023. 4. 21. 09:28

1. OAuth란? 개요 OAuth는 Open Authorization or Open Authentication이란 뜻으로 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹 사이트 상의 자신들의 정보에 대해 웹 사이트나, 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로 사용되는 접근 위임을 위한 개방형 표준이다. 구글, 페이스북, 트위터, 카카오, 네이버 등의 기업들이 타사 애플리케이션이나 웹 사이트의 계정을 공유할 수 있게 허용해준다. 애플리케이션 서비스 공급자들이(Service Provider) 유저의 비밀번호를 Third Party앱에 제공 없이 인증, 인가를 할 수 있는 표준 프로토콜이며, OAuth 인증을 하면 애플리케이션 API를 접근할 수 있는 권한을 얻을 수 있다. 과거에는 ..

Apache Spark 소개
Big-Data/Spark 2023. 4. 21. 09:19

Apache Spark Apache Spark는 분산된 메모리상의 데이터 처리 시스템이며, 2009년 버클리 대학교의 AMPLab에서 MapReduce Framework 성능을 향상시키기 위해 시작되었다. Spark는 기본적으로 맵리듀스 개념을 사용하지만, Spark만의 데이터 처리 방법 및 task 처리 방법으로 인해 메모리 내의 연산 속도가 Hadoop보다 100배 가량 빠르고 디스크에 저장되어 있을 때는 10배 빠르다. Spark는 Batch와 실시간 데이터 처리 분석, 머신러닝, 단일 클러스터 플랫폼상의 거대한 데이터 그래프 처리 등을 위한 Application 개발에 사용되며, 자바, 스칼라, 파이썬에 대한 풍부한 APIs를 제공한다. 장점 맵리듀스(MapReduce)와 유사한 일괄 처리 기능 ..

article thumbnail
Apache Storm 소개
Big-Data/Storm 2023. 4. 21. 09:16

Apache Storm Apache Storm은 분산형 실시간 처리 프레임워크로써, 노드마다 초당 수백만 개의 레코드를 처리하고 한 번에 하나씩 이벤트를 처리하는 기능이 있다. 그리고 1초의 지연마저도 큰 손실이 되는 매우 민감한 어플리케이션을 다루는데 사용되고, 추천엔진 제작, 의심스런 활동 트리거 등에 사용하고 있다. 또한 상태 저장 없이(stateless), 중요한 메타데이터 정보를 유지하기 위한 조정(coordinating)을 목적으로 주키퍼를 사용한다. 클러스터 구조 스톰은 마스터-슬레이브(master-slave)구조로 되어있고 님버스(nimbus)가 마스터이고, 수퍼파이저(supoervisor)가 슬레이브가 된다. 님버스(nimbus) : 스톰 클러스터 마스터노드로 클러스터 안에서 나머지 모든..

[Nginx] Intro 및 설치
Back-End/Nginx 2023. 4. 20. 09:54

Nginx Nginx는 "동시접속 처리에 특화된 웹 서버 프로그램으로 Apache보다 동작이 단순하고, 전달자 역할만 하기 때문에 동시접속 처리에 특화되어 있다. 우분투 설치 sudo apt-get update sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring ## Nginx pakage 저장소 서명키를 다운로드 하고 저장 curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null # lsb_release 명령을 통해 운영체제와 배포판 이..

SU에서 EOF 사용시 내부 변수 처리 방법
OS-Tools/Linux 2023. 4. 20. 09:34

SU에서 EOF 사용시 내부 변수 처리 방법 $를 이용하면 변수값을 사용할 수 있는데, su에서 EOF 를 사용시 $가 인식되지 않았다.. 해결방법은 생각보다 간단했다.. 내부변수를 사용하려면 $ 변수 앞에 ''문자를 추가하여 \$ 이런 식으로 해야 문자를 인식하게 된다. sudo su -l user

[Java] Lamda Expressions(람다식)
Language/Java 2023. 4. 20. 09:33

[Java] Lamda Expressions(람다식) 람다식은 Anonymous Founction(익명 함수)를 생성하기 위한 식으로 함수형 인터페이스를 구현하기 위해 자바 8에서 도입한 표현식이다. 장점 자바 코드가 간결해진다. 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계할 수 있다. 람다식의 형태 람다식의 형태는 매개변수를 가진 코드블록이지만 런타임 시에는 익명 구현 객체를 생성한다. 람다식 -> 매개변수를 가진 코드 블록 -> 익명 구현 객체 public interface func { U apply(T data); } 익명 클래스 문법 new 인터페이스 이름() { 반환타입 메서드명 (인자) { 실행문 } }; 람다식과 익명 클래스의 차이점 람다식과 익명클래스의 차이점은 람다식에서..

[Java] Generic(제네릭)
Language/Java 2023. 4. 20. 09:33

[Java] Generic(제네릭) Generic(제네릭)은 class와 interface, method를 정의할 때 Type(타입)을 Parameter(파라미터)로 사용할 수 있도록 하는 역할을 한다. 그래서 타입 파라미터는 코드를 작성할 때 구체적일 타입으로 대체되어 다양한 코드를 생성할 수 있도록 한다. 장점 컴파일 시 정확한 타입 체크를 할 수 있다. 컴파일러에서 코드에서 잘못 사용한 타입 때문에 에러가 발생하는 상황을 예방할 수 있다. Casting(형변환)을 사용하지 않는다. Casting을 사용하면 불필요한 타입 변환을 하므로 성능에 영향을 줄 수 있다. List list = new ArrayList(); list.add("work"); String data = (String) list.ge..

[ES6] Symbol
Language/Javascript 2023. 4. 20. 09:22

symbol 변경 불가능한 원시타입의 값이다. 주로 변수명이 충돌 위험이 없는 유일한 객체의 Property Key를 만들기 위해 사용되며 Symbol 함수를 호출하여 생성한다. //symbol key는 이름 충돌 위험이 없는 유일한 객체의 property key 이다. let key = Symbol('key'); console.log(key); console.log(typeof key); //symbol var obj = {}; obj[key] = 'value'; console.log(obj[key]); //value [결과] Symbol(key) symbol value