분류 전체보기338 HTTP 개요 - 출처: HTTP 절대 가이드 - HTTP 개요HTTP 는 신뢰성 있는 데이터 전송 protocol 을 사용하여 손상없이 순서를 보장하면서 메시지를 전송한다. HTTP 가 웹 트래픽을 어떻게 전송하는지 알아보도록 하자.- 리소스웹 리소스라는 말을 들어봤을것이다. 리소스는 서버가 갖고 있는 웹 컨텐츠라고 할 수 있다. 리소스는 정적 리소스와 동적 리소스로 나눌 수 있다.정적 리소스: text, HTML, jpeg, avi, 등이 있다. 이런 리소스들은 같은 이름으로 내용물을 변경하지 않는다면 같은 url 에 대해 항상 같은 컨텐츠를 반환한다.동적 리소스: 사용자가 요청 시각에 따라 다른 컨텐츠를 생성하는 리소스를 말한다. 예를 들어 주식 거래 그래프의 경우 시간 흐름에 따라 다른 컨텐츠를 사용자에게 보여.. 2024. 6. 30. 스테이크 - 리버스 시어링 - 재료토마호크(3cm 이상), 소금, 후추, 에어 프라이어 - 들어가기전에시어링(searing)은 높은 온도로 가열하여 표면을 캐러멜화된 껍질이 형성되게하는것을 말한다. 일반적으로 팬에 굽는 방법을 팬 포워드라고 한다. 고기를 구워본 경험이 없다면 아무리 인터넷에서 굽는 시간을 참조해본다 한들 온도 조절 및 구운 후 레스팅등 복합적인 과정을 거치면 성공적으로 스테이크를 굽기가 굉장히 어렵다. 그래서 두꺼운 스테이크를 구우면 겉은 타듯이 익지만 막상 내부는 생고기처럼 될때가 많다. 그리고 사실 고기 두께가 아주 두꺼워 지면 팬 포워드만으로는 스테이크를 내부까지 익힐 수 없다. 결국 시어링을 한 뒤 오븐에 넣고 내부까지 익혀야 한다. 그래서 리버스 시어링이란 방법이 등장했다. 리버스 시어링은 내부를 원하는.. 2024. 6. 17. Limited Direct Execution - 출처: Operating System - Three Easy Pieces - 개요CPU 가상화의 기본적인 개념은 하나의 process를 잠시 동안 실행하고, 그 후 다른 process 를 실행하는식으로 진행하는 time sharing 이다. 가상화의 가장 중요한 요소는performance: 추가적인 overhead 없이 가상화 구현control: CPU 에 대한 제어를 하면서 효율적으로 process 실행한다. 제어를 하지 않으면 하나의 process 가 machin 을 영원히 점유하거나 접근하면 안되는 자원에 접근할 수 있게 된다.결국 올바른 제어를 하면서 좋은 성능을 내는것이 OS 의 주요 과제이다.- Limited Direct Execution프로그램을 가장 빠르게 실행하는 방법은 CPU 상에.. 2024. 5. 25. Process API - 출처: Operating System - Three Easy Pieces - 개요UNIX 시스템은 fork()와 exec() system call 을 통해 process를 생성한다. 또한 wait() 을 사용하면 process 를 대기할 수도 있다. 이와 관련된 실질적인 예제를 더 자세히 살펴보면서 실제 이런 system call 들이 어떤 방식으로 사용되는지 감을 익혀보자.- fork() system callfork() system call 은 새로운 process를 생성하는데 사용된다. #include #include #include int main(int argc, char *argv[]) { printf("hello world (pid:%d)\n", (int) getpid()); i.. 2024. 5. 15. Process Abstraction - 출처: Operating System - Three Easy Pieces- 개요Process 란 무엇인가? 한마디로 정의하기에는 너무나 중요하고 복잡하지만 그중 가장 간단하고 직관적인 정의는 "프로그램 을 실행하는것"이다. 프로그램 자체는 생명주기를 갖지 않는다. 프로그램은 저장 장치(ex - Disk)에 존재하는데, 사용자가 실행하면 OS는 이를 가져와서 실행한다. 우리는 프로그램을 1개만 실행하지 않는다. 웹 브라우저를 켜놓고 게임을 하면서 음악을 듣는다. 시스템은 어느 CPU가 여유가 있어서 사용가능한지 신경쓰지 않는다. 이렇게 CPU 보다 많은 프로그램을 실행할 수 있는것은 OS가 CPU 가상화를 제공해서 가능하다.어떻게 CPU 가상화를 하길래 이런 상황이 가능한가? 여러 기술이 있겠지만 하나.. 2024. 5. 5. Introduction OS - 출처: Operating Systems - Three Easy Pieces개요Program을 실행한다는 것은 무엇인가? 많은 정의가 있을 수 있지만 그중 가장 직관적인 정의를 꼽으라면 "명령어를 수행하는것"이라고 할 수 있을것이다. OS는 Program을 수행할 때 다음과 같은 과정을 수행한다.Processor가 Memory로 부터 명령어(instruction)을 가져온다.이를 해석(decode)하고 실행(execute)한다.위 과정을 반복한다.OS의 가장 근본적인 책임은 많은 application 을 동시에 잘 수행될 수 있도록 하는것이다. 컴퓨터의 1 application이 1개의 memory만 점유하는것이 아니라 여러 개의 application이 memory를 공유한다. 또한 applicatio.. 2024. 5. 3. Sharding - 개요 개발자가 샤딩이라는 용어를 접할 수 있는 가장 일반적인 분야는 DB인것 같다. DB 장비(instance) 1대가 감당할 수 있는 수준을 넘어서는 규모의 데이터를 처리해본적이 있다면 샤딩이라는 단어를 들어봤을것이다. 샤딩을 적용하면 전체 데이터가 여러 대의 장비로 분산되며, 이에 따라 자연스럽게 1대의 DB 서버가 받는 부하도 분산된다. 그런데 샤딩이 꼭 DB에만 샤딩이 적용되는것은 아니다. 공유 데이터에 대한 쓰기나 읽기 락 경합을 완화하기 위해 사용되기도 한다. Golang 에서 Map 을 사용한다고 가정해보자. 어떤 데이터를 DB로 부터 조회한 후, Map에 취합한다. 그런데 데이터가 커짐에 따라 속도가 생각만큼 나오질 않아 goroutine을 생성하고 취합을 빠르게 하려고 한다. CPU를.. 2024. 1. 13. Fan-out, Fan-in - 출처: https://go.dev/blog/pipelines Go Concurrency Patterns: Pipelines and cancellation - The Go Programming Language Go Concurrency Patterns: Pipelines and cancellation Sameer Ajmani 13 March 2014 Introduction Go’s concurrency primitives make it easy to construct streaming data pipelines that make efficient use of I/O and multiple CPUs. This article presents examples o go.dev - 개요 Fan-out은 하나의 .. 2023. 11. 12. Timeout - 개요 Timeout은 예상되는 시간내에 결과를 받지 못할 경우 오류 상황으로 간주하는 패턴이다. 사실 설명이 필요할까 싶을 정도로 널리 그리고 거의 필수적으로 사용되는 패턴이다. 하지만 그렇다고해서 중요하지 않은것은 아니다. 서비스들이 연쇄적으로 호출관계를 가질 때, timeout을 적용하지 않는다면 하나의 서비스만 장애가 나도 이를 연쇄적으로 호출했던 서비스들은 무한대기를 하게된다. 이때 timeout을 적용하면 하나의 서비스 장애가 전체 시스템 장애가 되는 상황을 방지할 수 있다. - Golang example 간단한 패턴인만큼 곧바로 golang 예제를 살펴보자. 사실 golang 에서는 첫번째 인자로 권장하는 context.Context 덕분에 구현이 굉장히 용이한편이다. func TestTi.. 2023. 11. 11. 볶음밥 - 출처: 백종원 볶음밥: https://www.youtube.com/watch?v=kR77WlHRZrs - 출처: 여경옥 볶음밥: https://www.youtube.com/watch?v=jS4Fy17Fsdk - 출처: 여경래 볶음밥: https://www.youtube.com/watch?v=qFUP_XTvJjo - 출처: 이연복 볶음밥: https://www.youtube.com/watch?v=kCcHAeOiaRI - 재료 밥 1공기, 대파, 달걀 2개, 식용유 4큰술, 진간장 1/2 큰술, MSG 1/4 큰술, 맛소금 1g(1/8) - 요리하기 전에 밥은 반드시 수분이 없는 밥으로 해야한다. 물론 취향차이는 존재하지만 일반적으로 생각하는 볶음밥은 고슬고슬하고 물기가 없는 볶음밥이고 내 취향은 물기가.. 2023. 11. 6. 이전 1 2 3 4 5 ··· 34 다음