SE General
-
컨텍스트를 이해하며 알아보는 Nginx 내부구조SE General 2024. 1. 7. 13:40
아파치 톰캣 내부구조 (Apache Tomcat Internals) 아파치 톰캣은 Java Servlet, JavaServer Pages, Java Expression Language와 WebSocket 기술의 오픈소스 구현체로, Java 코드가 실행될 수 있는 "pure Java" HTTP Web server 환경을 제공합니다 [1]. 웹 서버 역할을 하는 중심 kadensungbincho.tistory.com 웹서버 기능에 더해 로드밸런싱, 캐싱, 접근과 대역폭 컨트롤, 다양한 앱을 효율적으로 통합할 수 있도록하는 Nginx는 2004년 러시아 소프트웨어 개발자 Igor Sysoev에 의해 탄생하였습니다. 물론 그 이전에도 널리 쓰이는 웹서버인 Apache가 존재하였습니다. 그러나 통계에 따르면 현재..
-
컨텍스트를 이해하며 알아보는 JMeter 내부구조SE General 2024. 1. 5. 00:07
Apache JMeter는 Java로 쓰여진 API 성능 테스트 도구입니다. 2011년에 첫 릴리즈 [1] 이후 꾸준하게 발전해왔는데요. 그만큼 오래되었지만, 비교적 간단한 구조로 이뤄져 있어서 소스코드를 쉽게 읽어볼 수 있습니다. 먼저 JMeter의 핵심에는 사용자가 요청한 명세에 따라서 여러 쓰레드를 만들어 병렬로, 반복적으로 호출을 가능하게 (Thread group) 각 쓰레드의 호출에서 단순하게 호출하거나, 이전 호출의 응답과 같은 조건에 따라 실행 흐름을 변경할 수 있게 (Controller) 각 쓰레드의 특정 호출이 HTTP, TCP 등 다양한 프로토콜을 지원할 수 있게 (Sampler) 전역적으로 또는 특정 Controller나 Sampler 범위에 변수를 지정하거나 설정을 할 수 있게 (..
-
콘웨이의 법칙(Conway's Law) : '자세'를 잡지못한 조직이 '프로덕트'라는 힘을 쓸 수 없는 이유SE General 2023. 11. 26. 23:08
컴퓨터 과학자 Melvin Edward Conway는 다음과 같이 말했습니다. 시스템 디자인은 조직의 커뮤니케이션 구조와 유사한 형태의 시스템을 만들게 된다 [1] Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure 이 말을 곰곰히 생각해보면, 특정 구조의 시스템 디자인을 원한다면 그러한 커뮤니케이션 구조를 만드는 조직 디자인(Organization Design)을 먼저 해야한다는 점을 알 수 있습니다. 구체적 예시로 생각해보면, 이 말은 '마이크로서비스 아키텍쳐로 개발을 하려면, 마이크..
-
도커(docker). 컨테이너 vs 가상머신(Virtual Machine)SE General 2023. 11. 21. 00:37
컨테이너와 VM(Virtual Machine) 모두 물리 서버의 리소스를 격리시켜 한정된 환경을 제공하는데 사용됩니다. 그렇기에 여러 부분 비슷한 특성을 보이면서도, 특징적으로 다른 부분들이 존재하는데요. 이번 글에서는 2가지를 비교하며 이해해보도록 하겠습니다. 어떻게 다른가? 먼저, 컨테이너와 VM 모두 실행될 host가 필요합니다. 이러한 host는 노트북, 데이터 센터의 bare metal 서버, 퍼블릭 클라우드의 인스턴스 등에 해당됩니다. 먼저, 가상화를 통해 3개의 앱을 실행한다고 가정해보겠습니다. 그러면 위 이미지의 좌측과 같이, 물리 서버에 하이퍼바이저를 띄우고 하이퍼바이저가 물리 서버의 리소스(CPU, RAM, storage, network card 등)를 나누어 VM에게 할당하고 패키징합..
-
도커(docker) 내부구조(internal)SE General 2023. 11. 19. 23:24
함께 읽으면 좋은 글 도커의 네트워킹 도커의 보안 도커 엔진(Docker Enginer)은 컨테이너를 실행하고 관리하는 핵심 소프트웨어입니다. 도커 엔진은 주로 도커 그 자체로 부르기도 하는데요. 이번 글에서는 우리가 'docker' 커맨드로 컨테이너를 실행하는 CLU를 입력했을 때 무엇을 통해 어떻게 동작하는지 알기 위해, 도커 엔진의 내부구조를 살펴보겠습니다. 도커의 실행 구조 우리가 도커로 컨테이너를 실행할 때에 흐름과 구조는 아래와 같습니다: runc 먼저, 가장 아래의 실행되고 있는 컨테이너는 그 위의 runc에 의해 실행됩니다. runc는 OCI(Open Container Initiaive) 컨테이너 런타임 스펙 구현체로 , Docker, Inc가 스펙을 정의하고 개발하는데에 깊은 관여를 하였..
-
콜드 스타트 이슈 - 어떻게 네트워크 프로덕트를 성장시킬 것인가?SE General 2023. 11. 12. 12:10
콜드 스타트 이슈(Cold Start Problem)는 말그대로 웜업(Warm-up)이 되지 않은 - 갓 출시된 프로덕트를 인지시키고, 각인시키고, 성장시키는 문제를 말합니다. 그러한 프로덕트 중에서도 특히, 네트워크 효과에 기반한 프로덕트에 해당되는데요. 용어를 만든 앤드류 첸은 운전 서비스 제공자와 이용자의 문제를 해결하는 Uber에서 초기 경험을 쌓았습니다. 그리고 이러한 문제가 Uber 뿐만 아니라 플랫폼의 성격을 지닌 다양한 IT 프로덕트, 그리고 다른 산업에서도 발생한다는 사실을 깨달았습니다. 그는 이후 모습은 조금씩 다르지만 Uber, Airbnb, Facebook, Dropbox, Slack 등 다양한 프로덕트의 성장과정에서의 문제와 그것으로 인한 성공 및 실패를 네트워크의 라이프사이클..
-
코딩 실력을 복리로 늘리는 최고의 방법SE General 2023. 9. 27. 23:18
(for native Korean speakers) 은 바로 영어입니다. 개인적으로는 개발자 커리어 초반에는 느리더라도 모든 문서를 영어만 읽고, 영어강의를 듣고, 코드리뷰를 영어로 해야한다고 생각하는데요. 그렇다면 왜 그런지, 뇌과학 논문 (1) 및 grey materials에 기반해 알아보겠습니다. Python 학습속도에 큰 영향을 주는 언어적성 이미지에서 보시 듯, Python 프로그래밍 언어에 대한 학습속도를 예측하는 모델(50~72%)을 설명하는 변수는: 1. 유동지능(fluid intelligence)과 작업기억(working memory)이 34% 2. 언어적성(L2 aptitude)가 17% 3. resting-state EEG power in beta and low-gamma bands ..
-
OAuth 2.0 for Native Apps, RFC-8252 (번역)SE General 2023. 9. 3. 01:31
아래는 개인적인 공부를 목적으로 RFC-8252인 OAuth 2.0 for Native Apps를 번역한 내용입니다. 이상한 부분 피드백 주시면, 감사히 수정하겠습니다 :) 네이티브앱을 위한 OAuth 2.0 Abstract 네이티브앱으로부터의 OAuth 2.0 인가 요청은 반드시 주로 유저의 브라우저인 외부유저에이전트를 통해 이뤄져야 합니다. 이 스펙은 왜 그러한지에 대해 보안적, 사용성적인 이유를 다루고, 네이티브앱과 인가 서버가 이 베스트프랙티스를 어떻게 구현할 수 있는지를 설명합니다. 1. Introduction OAuth 2.0 인가 프레임워크를 설명하는 RFC6749에선, 인가 엔드포인트와 연동되는 native apps를 위해 2가지 방법을 제시합니다: 임베디트 유저에이전트(embedded u..