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

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

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

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

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

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

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 … Read more

JAVA Instrumentation API

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

Garbage Collection – 2부

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

Garbage Collection – 1부

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

Clean Code

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

Load balancers

1. load balancing 로드 밸런싱은 네트워크 트래픽을 여러 서버에 분산시키는 프로세스입니다. 이렇게 하면 단일 서버에 너무 많은 수요가 발생하지 않습니다. 작업을 고르게 분산함으로써 로드 밸런싱은 애플리케이션 응답성을 향상시킵니다. 또한 사용자를 위한 응용 프로그램 및 웹 사이트의 가용성을 높입니다. No load Balancing load Balancing 로드 밸런싱은 네트워크 트래픽을 여러 서버에 분산시키는 프로세스. 단일 서버에 너무 많은 … Read more

Test-Driven Development

1. TDD의 이해 XP(eXtreme Programming) 창시자 중 한 명이며, TDD를 주도한 켄트 벡은 TDD를 소개한 자신의 책에서 “프로그램을 작성하기 전에 테스트를 먼저 작성하는 것” 이라고 테스트 주도 개발을 정의했습니다. 최초에는 테스트 우선개발이라고 불렸으나 지금은 테스트 주도개발 이라고 불리고 있습니다. TDD는 아래와 같은 차이로 이해할 수 있습니다. “문서로 만들어 머리로 생각하고 눈으로 확인할 것인가?“ “예상 결과를 … Read more