Studying/CS Knowledge 22

Transaction(트랜잭션)

Transaction의 사전적 의미는 DB의 상태를 변화시키기 위해 수행하는 작업의 단위를 뜻합니다. 여기서 DB의 상태를 변화시킨다는 것은 SQL 질의어(Select, Insert, Delete, Update...)를 통해 DB에 접근하는 것을 의미합니다. 여기서 작업의 단위는 질의어 한 문장이 아니라 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미합니다. 이 트랜잭션은 작업의 완전성을 보장해주는데, 논리적인 작업 셋을 모두 완벽하게 처리하거나 혹은 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능입니다. 사용자의 입장에서는 작업의 논리적 단위로 이해를 할 수 있고, 시스템의 입장에서는 데이터들을 접근/변경하는 프로그램의 단위가 ..

Stateful & Stateless

요즘은 HTTP를 이용해 HTML, TEXT, Image는 물론이고 Json이나 XML같은 API 파일 등 서버 간 데이터를 주고 받을 때 모두 HTTP 프로토콜을 사용합니다. 이 HTTP의 중요한 특징 중 하나는 무상태 프로토콜(Stateless)을 지향한다는 것입니다. 이는 서버가 클라이언트의 상태를 보존하지 않는다는 것을 의미합니다. HTTP에서는 클라이언트가 요청을 하면, 서버에서 응답을 하는 방식으로 이루어진다고 했는데 예시를 통해 살펴보겠습니다. 1. Stateful Stateful은 상태유지를 의미하며 서버가 클라이언트의 상태를 보존하는 것을 의미합니다. 클라이언트의 다음 요청이 이전 요청과 관계가 이어지는 것을 의미합니다. 웹 서버로 예를 들자면 브라우저의 상태, 쿠키, 세션 정보를 기억..

프레임워크 & 라이브러리

우리가 치킨 집을 창업한다고 생각해보겠습니다. 닭, 소스를 사고 만들어보고 맛이 없으면 버리고 다시 새로 만들어봅니다. 치킨 집의 이름을 정하고 메뉴판도 만들고 매장을 차려야 장사를 시작할 수 있을 것입니다. 그런데 우리가 창업을 할 때는 자기 이름으로 차리는 경우는 드물고 프렌차이즈로 간판을 빌립니다. 여기서 BHX, BBX 등 브랜드가 프레임워크라고 생각하면 됩니다. 1. Framework 뼈대를 뜻하는 프레임워크는 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 제공하는 것을 말합니다. 애플리케이션 개발 시, 필수적인 코드 및 알고리즘, DB 연동과 같은 기능들을 위해 어느정도 뼈대를 제공하며, 사용자는 이러한 뼈대(프레임)에서 애플리케이션을 개발합니다. 앱 구동, 메모리..

OSI 7 Layer

https://refreshment-wg.tistory.com/4 데이터 전달 원리 1. 데이터의 기술적 개념 우선 데이터의 기술적 개념부터 생각해보자. 우리가 흔히 말하는, 컴퓨터 화면을 통해 볼 수 있는 모든 데이터는 컴퓨터 밖 세상의 것들과 크게 다르지 않다. 책처럼 refreshment-wg.tistory.com 데이터 전달 원리라는 글에서 OSI 7 계층에 대해 간략히 적었는데 미흡한 부분이 있어 작성하였습니다. OSI 7 Layer(Open Systems Interconnection Reference Model)은 네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 분리하여 각 계층 간 상호 작동하는 방식을 정해놓은 모델입니다. OSI 7 계층이라고도 합니다. 1. 목적 이러한 OSI 모델이 ..

가상 메모리

가상 메모리(Virtual memory)는 메모리 관리 기법의 하나로 기계에 실제로 이용 가능한 기억 자원을 추상화하여 사용자에게 매우 큰 메모리로 보이게 만드는 것을 말합니다. 컴퓨터의 주기억장치 상에 2개 이상의 프로그램이 적재되어, 하나의 프로그램이 CPU를 사용하다 입출력 동작을 하게되면, 상대적으로 느린 입출력 장치를 수행시키는 동안 CPU로 하여금 다른 프로그램을 수행하여 컴퓨터의 효율을 증대 시키는 다중 프로그래밍을 실현하기 위해서는 많은 프로세스들을 동시에 메모리에 올려두어야 합니다. 가상메모리는 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법이며, 프로그램이 물리 메모리보다 커도 된다는 주요 장점이 있습니다. 가상 메모리 개발 배경 실행되는 코드의 전부를 물리 ..

캐시 메모리

캐시 메모리(Cache Memory) 캐시 메모리는 속도가 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 말합니다. ex1) CPU 코어와 메모리 사이의 병목 현상 완화 ex2) 웹 브라우저 캐시 파일은, 하드디스크와 웹페이지 사이의 병목 현상을 완화 CPU가 주기억장치에서 저장된 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시 메모리에 저장한 뒤, 다음에 이용할 때 주기억장치가 아닌 캐시 메모리에서 먼저 가져오면서 속도를 향상시킵니다. 속도라는 장점을 얻지만, 용량이 적기도 하고 비용이 비싼 점이 있습니다. CPU에는 이러한 캐시 메모리가 2~3개 정도 사용됩니다. (L1, L2, L3 캐시 메모리라고 부른다) 속도와 크기에 따라 분류한 것으로, 일반적으로 L1 캐시부..

DNS round robin

https://refreshment-wg.tistory.com/14 DNS의 동작 원리 1. DNS? 인터넷에 연결되어 있는 장치들(컴퓨타, 스마트폰, 서버..)은 각각의 장치를 식별할 수 있는 IP주소를 가지고 있으며, 이를 숫자 형태로 나타냅니다 ex) 115.68.24.88 하지만 이런 숫자는 사 refreshment-wg.tistory.com DNS의 동작원리와 이어지는 글입니다. 간략하게 DNS는 각 장치들을 식별하는 ip주소에 이름을 부여하는 시스템이라고 했습니다. DNS round robin은 DNS 서버 구성 방식 중 하나로 DNS만을 이용해 도메인 레코드 정보를 조회하는 시점에서 트래픽을 분산하는 기법입니다. 1. 원리 웹 서버로 예를 들면, 웹 서비스를 담당할 여러 대의 웹 서버는 각각..

Scheduler 종류

OS에 대해 설명하면서 스케줄러가 언급되었는데 자세히 살펴보겠습니다. 먼저 스케줄러는 한정적인 메모리를 여러 프로세스가 효율적으로 사용할 수 있도록 다음 실행 시간에 실행할 수 있는 프로세스 중에 하나를 선택하는 역할을 한다고 했습니다. 프로세스를 스케줄링하기 위한 Queue 에는 세 가지 종류가 존재합니다. Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합 Ready Queue : 현재 메모리 내에 있으면서 CPU 를 잡아서 실행되기를 기다리는 프로세스의 집합 Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합 각각의 Queue 에 프로세스들을 넣고 빼주는 스케줄러에도 크게 세 가지 종류가 존재합니다. 1. 장기스케줄러(Long-term scheduler..

객체지향의 SOLID 원칙

https://refreshment-wg.tistory.com/31 객체 지향 프로그래밍 1. Object Oriented Programming 객체 지향 프로그래밍의 사전적 의미는 컴퓨터 프로그램의 명령어를 목록으로 보는 시각에서 벗어나, 하나의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것입 refreshment-wg.tistory.com 객체지향프로그래밍이라는 글에서 SOLID 원칙에 대해 적었는데 간략하게 서술했습니다. 1. SPR(단일 책임 원칙) Single Responsibility Principle은 클래스, 함수는 단 하나의 책임만을 가져야한다는 것입니다. 책임이 많아지면 클래스 내부의 함수끼리 강한 결합이 발생할 가능성이 높아지는데 이는 유지보수에 필요한 비용이 증가하게 됩..

Managed Code & Native Code

Native code는 Unmanaged code라고 불립니다. (관리되지 않는 코드) 하지만 'Managed code는 좋은 것이고 Unmanaged code는 좋지 않은 것이다'는 것은 절대 아닙니다. Compile을 하게 되면 OS에서 해석가능한 기계어로 바로 번역이 되고, 이것은 프로그램하는 사람 입장에서 이런 저런 신경을 많이 쓰게 만듭니다. 예를 들어 프로그램 실행시 사용했던 메모리는 프로그램이 끝날 때 잘 확인해서 모두 OS에 반납을 해야하고 혹시라도 프로그래머가 잊어 버리고 반납하지 않으면 시스템 에러를 일으킬 것입니다. 또 다른 예로 OS는 H/W에 따라 다르므로 프로그램을 Windows에서 Linux로 또는 그 반대로 옮기고 싶을 때(Porting한다라고 하죠.) 이거 생각보다 굉장히 ..