빅데이터 처리와 저장의 핵심 기술, Hadoop

Hadoop (High-Availability Distributed Object-Oriented Platform); 대량의 자료를 처리할 수 있는 큰 컴퓨터 클러스터에서 동작하는 분산 응용 프로그램을 지원하는 자바 소프트웨어 프레임워크. 하둡이란? 1. 배경 2006년 야후의 더그 커팅이 ‘넛치’라는 검색엔진을 개발하는 과정에서 대용량의 비정형 데이터를 기존의 RDB 기술로는 처리가 어려워 새로운 기술을 찾는 중 구글에서 발표한 GFS(Google File System) 와 MapReduce 관련 논문을 참고하여 개발하고, 이후 아파치 재단에서 오픈 소스로 […]

[Server] 서버 인증 이해하기-4부 (OAuth 확장편)

인증 유형(Authorization Grant Types) 시퀀스 다이어그램 1. Authorization Code 리소스 접근을 위한 계정 정보, 권한 서버에 요청하여 받은 권한 코드를 함께 활용하여 리소스에 대한 Access Token을 받는 방식이다. – 권한 서버가 클라이언트와 리소스 서버 간의 중재역할을 한다. – Access Token을 바로 클라이언트로 전달하지 않아 유출을 방지한다. – 로그인 시 페이지 url에 response_type=code 로 넘긴다. 2. Implicit 인가 코드 승인 방법과 […]

[Server] 서버 인증 이해하기-3부 (OAuth 기본편)

웹 서비스를 이용하면서 로그인이 필요할 때 위와 같은 로그인 창을 쉽게 찾아볼 수 있다. 해당 웹 사이트를 위한 회원가입 없이 로그인을 제공하는 플랫폼(네이버, 카카오, 페이스북 등)의 계정만 있으면 서비스를 이용할 수 있다. 이렇게 외부 서비스에서 인증을 가능하게 하고, 그 서비스의 API를 이용하게 할 수 있다. 이 때 사용되는 프로토콜이 바로 지금 살펴볼 OAuth이다. OAuth란 OAuth(Open Authorization)는 인터넷 사용자들이 비밀번호를 제공하지 […]

[Server] 서버 인증 이해하기-2부 (SSO)

최근 많은 기업들이 그룹화되고 대형화되면서 여러 사이트들을 통합 관리하게 되면서 SSO를 사용하고 있다. 통합인증 SSO를 사용하게 되면, 개인의 경우 사이트에 접속하기 위해 아이디와 패스워드 등 개인 정보를 각 사이트마다 일일이 기록해야 하던 번거로움을 한 번의 작업으로 해소할 수 있고, 기업에서는 회우너에 대한 통합 관리가 가능하여 마케팅을 극대화할 수 있다. 베스핀글로벌은 분리되어있던 다양한 사내 Application을 통합 관리하기 위해 Okta 서비스를 활용하고 […]

[Server] 서버 인증 이해하기-1부 (HTTP)

서버 개발을 하거나, 혹은 인터넷 사용자가 브라우저를 사용하다보면 쿠키라는 단어를 볼 수가 있다. 그리고 인터넷 사용 중 ‘세션이 만료되었습니다’ 라는 문구를 한 번쯤 봤을 거라 생각이 든다. 이 둘의 공통점은 사용자의 로그인 정보를 가지고 있다는 점이다. 서버 인증에 대해 이해하기 위해 본문의 개념들을 살펴보자. HTTP 특징 HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다. 클라이언트인 웹 브라우저가 HTTP 를 통하여 서버에 […]

HTTP1.1, HTTP2 비교

이번 글은 imagekit 공식 사이트에서 HTTP/2 vs HTTP/1 – Performance Comparison 문서와 HTTP/1.1 vs HTTP/2: What’s the Difference 문서를 번역/편집하여 작성 하였습니다.” 참고자료 : https://imagekit.io/blog/http2-vs-http1-performance/ HTTP/1.1 vs HTTP/2: What’s the Difference? | DigitalOcean 1. HTTP1.1, HTTP2 1.1 소개 하이퍼텍스트 전송 프로토콜(HTTP)은 1989년 발명된 이후로 월드와이드웹(World Wide Web)에서 사실상의 통신 표준이 된 응용 프로토콜입니다. 1997년 HTTP/1.1 릴리스부터 최근까지 사용된 프로토콜 입니다. […]

JAVA Instrumentation API

Instrumentation API와 Application Performance Monitoring 최근 굉장히 많은 APM(Application Performance Monitoring) 툴이 생겨나고 있습니다. 오픈소스를 비롯하여 많은 상용소스들이 java application의 performance monitoring 정확히는 application의 실행 상태를 확인하기 위해 stack profiling을 가능 하게 해주고 있습니다. 여기서는 datadog, pinpoint, scouter 과 같은 오픈소스들에서 사용한 핵심 기술인 Instrumentation API에 대해서 알아보고 예제 코드를 통해 어떻게 구현되어 있는지 테스트 해보도록 하겠습니다. Java Agent란? Instrumentation […]

Garbage Collection – 2부

1. GC 발생 시나리오 객체가 생성되면 Eden 영역에 위치 하게 된다. Eden영역이 가득차게 되면 Minor GC가 발생하여 참조가 없는 객체는 삭제되고, 참조 중인 객체는 Suvvivor 영역으로 이동한다. Survivor영역이 가득차게 되면 Minor GC가 발생하고 참조가 없는 객체는 삭제되고, 참조 중인 객체는 다른 Suvvivor 영역으로 이동한다. Survivor영역에서의 GC과정을 반복 하며, 계속 참조 중인 객체는 OLD 영역으로 이동한다. Eden 영역에서 Survivor 영역으로 이동 […]

Garbage Collection – 1부

1. GC(Garbage Collection) 응용 프로그램의 메모리 부족을 방지하려면 더 이상 필요하지 않은 Java 힙의 개체를 회수해야 합니다. 이 프로세스를 가비지 수집 (GC)이라고 합니다. 일반적으로 GC 프로세스의 첫 번째 단계는 연결할 수 있는 개체를 표시 하는 것인데, 이는 개체가 여전히 사용 중임을 의미합니다. 다음 단계는 표시되지 않은 개체를 제거하여 메모리를 회수하는 것입니다 . 마지막 단계는 힙이 심하게 조각난 경우 힙 을 […]

Clean Code

클린 코드란? 수많은 프로그래머들이 정의한 클린 코드란 무엇일까요? 프로그래머들이 인터뷰를 할 때 좋은 코드가 읽기도 쉽다고 말합니다. 하지만 코드를 쉽게 읽을 수 있는 것만으로 코드가 깨끗하고 올바르게 설계되었다고 말하기에는 충분하지 않습니다. 클린코드는 다음과 같은 특성이 있어야 합니다. 모든 테스트 실행. 중복제거. 프로그래머 의도 표현. 클래스와 메서드 수를 최소화. * 코드는 안정적이고, 예측 가능하며, 안전하고, 신뢰할 수 있어야 합니다. 코드가 읽기 […]