SE Concepts
-
백엔드 개발자를 위한 네이티브 모바일 앱의 특징SE Concepts 2023. 12. 12. 00:50
모바일 앱이 가진 고유한 특징은 뒷단의 백엔드 개발에도 영향을 미칩니다. 이러한 특징들은 웹 기반 서비스에 익숙한 백엔드 개발자들이 쉽게 놓칠 수 있는데요. 많은 앱들이 웹뷰 형태로 네이티브와 웹을 결합한 형태로 구성되어 있으나, 그렇기에 더욱 네이티브 앱의 특징을 명확하게 인지하지 못하는 경우도 발생합니다. 이번 글에서는 Building Mobile Apps at Scale [1]의 내용을 중심으로, 백엔드 개발과 관련 깊은 네이티브 모바일 앱의 특징들을 알아보겠습니다. 모바일 앱은 바이너리가 스토어(구글플레이 또는 앱스토어)를 통해 업로드 되고, 유저가 모바일 기기에 다운로드 받아 설치되며 배포됩니다. 이러한 모바일 앱의 환경이 모바일 앱 개발과 네이티브 앱이 사용하는 백엔드 API 개발에 영향을 미..
-
가상 머신(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 대신에 지금의 하이퍼바이저라는 이름으로 부르게 되었습니다. 초기에 엔지니어들이 ..
-
어니언 라우팅(Onion routing)이란?SE Concepts 2022. 7. 3. 22:30
어니언(양파, onion) 라우팅은 컴퓨터 네트워크 상에서 익명 커뮤니케이션을 보장하기 위한 기술입니다. 어니언 네트워크에서, 메시지는 양파 층과 비슷하게 암호화 레이어에서 캡슐화됩니다. 암호화된 데이터는 어니언 라우터라고 불리는 여러 네트워크 노드들을 통해 전송되며, 하나의 노드를 지날 때마다 데이터 캡슐의 한겹을 벗겨내며 다음 전송지를 알아내게 됩니다. 마지막 레이어가 복호화될 때에, 메시지는 최종 전송지에 도달하게 됩니다. 이러한 구조에서 각 중간자는 오직 직전과 직후 노드의 위치만 알 수 있기 때문에 송신자는 익명을 보장받을 수 있습니다. 어니언 라우팅은 높은 수준의 보안과 익명성을 제공하는 반면, 타이밍 분석과 같이 익명성을 파헤칠 수 있는 몇 가지 방법이 존재하긴 합니다. [5] 이번 글에서는..
-
Two-Phase Commit이란? (2PC)SE Concepts 2021. 10. 7. 07:17
HDFS(하둡분산파일시스템) 주요 개념 및 아키텍쳐 HDFS는 하둡 환경에서 분산 파일 시스템 기능을 담당하는 하둡의 주요 모듈입니다. 이번 글에서는 HDFS와 관련해 다음과 같은 부분들을 다루고자 합니다: HDFS의 주요 목적 HDFS 주요 개념 및 아키텍 kadensungbincho.tistory.com Two-phase 커밋은 여러 노드들 상에서의 원자적 트랜잭션 커밋을 이루기 위한 알고리즘(또는 프로토콜)입니다. 하나의 트랜잭션에 대해 모든 노드가 동일하게 커밋하거나 아니면 실패처리하는 것을 보장하기 위해 분산 데이터베이스에서 사용되는데요. 2PC는 몇몇의 데이터베이스 내부에 사용되거나 XA transaction(Java transaction API에서 지원), WS-AtomicTransactio..
-
분산처리엔진이란? (Distributed Execution Engine)SE Concepts 2021. 8. 29. 15:11
분산처리엔진(Distributed Execution Engine)은 네트워크로 연결된 컴퓨터들로 이뤄진 클러스터에서 대용량의 데이터 처리를 위해 실행되는 소프트웨어 시스템입니다. 분산처리엔진은 하나의 안정적인 머신과 같은 대용량의 컴퓨팅과 I/O 성능이라는 '추상화'를 제공하기에 사용자는 하나의 머신에서 작업을 수행하는 것과 유사한 형태를 통해 작업을 수행할 수 있는데요. 이렇게 네트워크로 연결된 시스템의 각 머신은 데이터에 의존하는 컨트롤 흐름을 처리합니다 [1]. 그렇기에 분산 병렬 컴퓨팅에서 어려운 부분인 task 스케쥴링, 데이터 동기화, 데이터 송신, 네트워크에서의 실패와 같은 부분들을 구현해 놓았고, 사용자는 손쉽게 분산 병렬 데이터 프로세싱 애플리케이션을 작성할 수 있습니다. 분산처리엔진은 ..
-
Red-Black Tree란?SE Concepts 2021. 8. 22. 21:36
레드-블랙 트리는 각 노드에 "color"라는 추가적인 비트 정보가 담긴 self-balancing 이진 탐색 트리입니다. 노드 삽입, 삭제 시에도 균형을 유지하기에 빠른 접근을 가능하게 해주는 자료구조인데요 [2]. 트리가 변경될 때마다, 새로운 트리는 재-나열(re-arrange)되고 다시 색깔이 설정되어(re-painted) 색깔 특성을 회복하고 이것은 unbalanced 트리가 worst-case가 되는 것을 막습니다. 재-균형(rebalance)은 완벽하진 않지만 O(log n)의 검색 시간을 보장합니다. 노드 삽입과 삭제 시에도 재-나열과 repaint를 포함해 O(log n) 안에 수행됩니다. 또한, 디스크 소비와 관련해서 "color"라는 추가적인 비트 정보는 노드 당 1비트를 소모하기에 ..
-
리눅스(Linux) 기초 개념SE Concepts 2021. 5. 29. 14:12
리눅스 커널 관련 책을 읽다가 200쪽을 넘어가던 중 읽기가 어려워 포기하고, 새로운 책을 찾아나섰습니다. 그러던 중 아마존에서 매우 평이 높아 읽기 시작하게된 [1]의 경우 매우 구성이 잘 되어 있어 추천하고 싶다는 생각을 하게 되었습니다. 이번 글에서는 [1]의 챕터 2를 요약하며, 리눅스를 이미 알고 있던 분들에게는 환기, 잘 모르시는 분들에게는 대략적인 소개가 될 수 있는 글을 기술해보려 합니다. 커널 보통 '운영체제'라는 용어는 2가지 다른 의미로 사용됩니다: 컴퓨터 리소스를 관리하는 중심 소프트웨어와 동반하는 여러 소프트웨어 도구(커맨드 라인 인터프리터, GUI, 파일 유틸리티, 에디터 등)로 포함된 패키지를 일컫는 경우 좀 더 좁은 개념으로 컴퓨터 리소스(CPU, RAM, 디바이스 등)를 관..