Software Engineering
-
도커(docker) 내부구조(internal)SE General 2023. 11. 19. 23:24
함께 읽으면 좋은 글 도커의 네트워킹 도커의 보안 도커 엔진(Docker Enginer)은 컨테이너를 실행하고 관리하는 핵심 소프트웨어입니다. 도커 엔진은 주로 도커 그 자체로 부르기도 하는데요. 이번 글에서는 우리가 'docker' 커맨드로 컨테이너를 실행하는 CLU를 입력했을 때 무엇을 통해 어떻게 동작하는지 알기 위해, 도커 엔진의 내부구조를 살펴보겠습니다. 도커의 실행 구조 우리가 도커로 컨테이너를 실행할 때에 흐름과 구조는 아래와 같습니다: runc 먼저, 가장 아래의 실행되고 있는 컨테이너는 그 위의 runc에 의해 실행됩니다. runc는 OCI(Open Container Initiaive) 컨테이너 런타임 스펙 구현체로 , Docker, Inc가 스펙을 정의하고 개발하는데에 깊은 관여를 하였..
-
고부가가치 개발Mental Model 2023. 11. 19. 00:16
최근 팀내에서 논의가 있었다. 내부 툴 Front 단 개발을 어떤 형태로 진행할까에 대한 논의였다. 보통 '이러한' 개발은 특정 이름 a라고 불리는 팀에 요청하여 처리하였기에, 이번에도 그런 형태로 처리하자고 마무리가 되었다. 내부에서 보면 '뚜렷하게' 차이가 나지 않는 팀 a는 명확히 구분하자면 외부사로, 특정 계약을 통해 프로젝트별로 비용을 지불하는 것으로 보였다. 그 순간 내 머릿속에 떠오른 질문은 '어떤 기준으로 특정 작업(A)은 외주를 맡기고, 특정 작업(B)은 직접 고용한 인원으로 개발을 진행할까?'였다. 이어서, '그렇다면 내 밥값은 A 대신 B라는 특정 작업을 하고 있다는 사실로 정당한걸까?'였다. 순간 스쳐지나간 생각을 글로 '끌고올' 정도로, 의미가 있다고 느꼈던 이유는 1. 이 부분..
-
가상 머신(Virtual Machine)이란?SE Concepts 2023. 11. 16. 00:13
가상 머신은 가상화의 기반이 되는 컴포넌트입니다. 가상 머신은 가상화 전의 bare-metal에서의 운영체제와 애플리케이션이 담기는 곳으로 하이퍼바이저 위에서 동작합니다. 가상 머신 내부에서 보면 물리 서버 내부와 별로 다를게 없습니다. 그러나 가상 머신 외부에서 살펴보면, 물리 서버와 동일하게 동작하도록 수많은 처리가 진행되고 있는 것을 볼 수 있습니다. 이 글에서는 가상 머신이 무엇인지, 가상 머신에서의 CPU, Memory, Network, Storage의 처리는 기반한 하이퍼바이저, 하드웨어와 어떻게 동작하는지 알아보도록 하겠습니다. 가상 머신이란? VM(가상 머신)은 물리서버와 동일하게 운영체제를 지원하고, 애플리케이션이 접근할 수 있는 여러 리소스를 설정할 수 있습니다. 하지만 물리서버와는 달..
-
Hypervisor(하이퍼바이저)란?SE Concepts 2023. 11. 15. 00:37
넓은 관점에서, 하이퍼바이저는 리소스의 최종 결정권자입니다. 개념적으로는 물리적인 서버와 서버에서 실행되는 가상 머신(virtual machine)의 중간에 존재하는 소프트웨어 later로 존재하는데요. 하이퍼바이저는 리소스 할당 뿐만 아니라 가상 환경, 가상 네트워크, 클러스터링 등을 기반해 동작하는 가상 머신에 제공해줍니다. 정확히 이해하기 위해서는 무엇보다도 그 이름의 히스토리를 살펴보는게 좋은데요. 초기에 가상 머신 모니터(Virtual machine monitor)가 특정 목적을 위해 생성되었습니다. 그것이 더욱 발전해서 가상 머신 매니저(Virtual machine manager)로 불리게 되었습니다. 이후 VMM 대신에 지금의 하이퍼바이저라는 이름으로 부르게 되었습니다. 초기에 엔지니어들이 ..
-
콜드 스타트 이슈 - 어떻게 네트워크 프로덕트를 성장시킬 것인가?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..
-
회고 - 라인넥스트에서의 2023년 상반기Routine 2023. 7. 23. 23:59
작년 10월의 회고 이후 많은 시간이 흘렀습니다. 자칫 늘어지기도 쉬운, 라인에서 2년이 가까워지는 시점에 2023년에 대한 회고(기업 관련 내용을 제외하고)를 작성해봅니다. 무엇을 했는가 기존과 같이 Kotlin, Spring Webflux, MySQL, Redis, Kafka를 사용하여 백엔드 개발을 진행했습니다. 특징적인 프로젝트로는 계정계 통합 운영 이슈 해결 개선 요청사항 구현 일부 신규 모듈 개발 사내 툴을 이용한 데이터 플랫폼 셋업 정도인 듯 하네요. 무엇을 배웠는가 '작년 10월의 나' vs '현재의 나'를 비교해보자면 시간이 흐르며 까먹고 퇴화된(?) 것들도 있을 것이고, 9개월이라는 시간을 보내며 배우고 성장한 부분도 있을텐데요. 먼저 조금 퇴화된 부분이라고 생각되는 것은 현재의 환경에..