🥌 커널이란?운영체제 중 항상 메모리에 올라가 있는 운영체제의 핵심 부분으로써 하드웨어와 응용 프로그램 사이에서 인터페이스를 제공하는 역할을 하며 컴퓨터의 자원들을 관리하는 역할을 한다. 즉, 커널은 인터페이스로써 응용 프로그램 수행에 필요한 여러가지 서비스를 제공하고 여러가지 하드웨어등의 리소스를 관리한다. 하지만 커널은 컴퓨터자원과의 상호작용으로 인해 사용자와는 상호작용하기 어렵다. 때문에 사용자와의 직접적인 상호작용을 하기위해 만들어진 쉘(shell)을 사용해야 한다. 추상화컴퓨터의 자원을 관리하는 커널을 더 큰 역할로 분류를 해보자면 물리적 자원과 추상화 자원을 관리하는 것을 말한다. 마치 하나의 하드웨어를 여러개처럼 보이게 하는 기술과도 같다. 관리자물리적 자원 이름→추상화한 자원 용어태스크..
분류 전체보기

🎞 OSI 7계층말고 또??이전 블로그에서는 네트워크 전송 시 데이터 표준을 정리한것이 OSI 7계층이라는 말을 했다. 이것은 이론과도 같은 말인데 이 이론을 현대 인터넷 표준에 맞춰 재설정된것이 TCP/IP 4계층이다. 굳이 나누지 않아도 되는 층을 단순하게 합치고 중요하게 다뤄야하는 층만을 나누어 확인한다. 그렇다면 간단하게 어떤 층이 생략되고 어떻게 이름이 변경되었는지 알아보자🎞 TCP/IP 4계층1. Network LayerOSI 에서 물리와 데이터 링크 계층을 합쳐놓은 곳이다Node - to - Node간의 신뢰성 있는 데이터 전송을 담당하는 계층이다.기존의 데이터 링크의 역할인 MAC주소를 핸들링 할 뿐아니라, 물리의 역할인 데이터 패킷을 전기신호로 변화하여 선로를 통하여 전달할 수 있게 ..

✉ 왜 7계층으로 나눈걸까?쉽게 말해 이상이 발생하면 어느 단계에서 이상이 발생한지 쉽게 알 수 있고 그에 따라 빠른 대처가 가능하기 때문이다. 그것을 네트워크의 진행과정을 7단계로 나누면서 OSI 7계층이 나타난 것이다 ✉ 네트워크 OSI 7계층1. 물리 계층 (Physical Layer)전기적 신호가 나가는 물리적인 장비이다단지 데이터를 전달할 뿐 어떤 데이터인지 어떤 에러가 있는지에 대한 정보는 다루지 않는다 2. 데이터 링크 계층 (Data Link Layer)물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와준다.통신에서의 오류를 찾고 재전송도 해준다.※ e.g. 흐름제어, 오류제어, 순서제어해당 계층에서는 MAC주소를 가지고 통신한다.MAC주소..

🩹 Naver가 보이는게 당연???우리가 Naver를 클릭하면 자연스럽게 보여지는 화면은 항상 당연하다고 생각하게 된다. 때문에 CS를 공부할때도 생각보다 당황하게 되는 주제 중 하나이다. 왜냐하면 늘 당연하고 자연스럽다고 생각한것에 대한 과정을 막상 바라보면 굉장히 복잡하고 생각보다 어렵기때문이다. 그래서 한번 알아보고자 한다. 🩹 Web 동작의 원리1 & 2. 사용자가 웹 브라우저를 URL 입력을 통해 검색한다 사실 이는 2번의 과정과도 같다.3. 사용자가 입력한 URL 주소 중에서 도메인 네임 부분을 DNS 서버에서 검색한다4. DNS 서버에서 해당 도메인 네임에 해당하는 IP주소를 URL과 함께 전달한다.5 & 6. 웹 페이지의 URL 정보와 전달받은 IP 주소는 HTTP 프로토콜을 사용해서 ..

🧧 캐시와 캐싱성능을 좋게 만드는 방법을 대표하는 것들은 정말 다양하다. 오늘은 그 중 성능 향상에서 빠지지 않는 주제인 캐싱에 대해서 얘기를 해보려고 한다. 캐시란?캐시는 컴퓨터의 성능을 향상 시키기 위해 데이터를 임시로 저장해두는 장소를 뜻한다.캐싱은 캐시 영역로 데이터를 가져와서 해당 메모리에서 읽고 쓰는 작업하는 방식 그자체를 말한다.다른 의미는 메모리상에 있는 데이터를 연산하고, 이 연산을 더 빠른 CPU 메모리 영역으로 가져와 처리를 수행하는 것도 캐싱이다. ♬캐싱의 이점1. 어플리케이션 성능 개선In-Memory는 디스크보다 데이터를 읽는 속도가 훨씬 빠르기 때문에 훨씬 더 빠른 데이터 액세스는 어플리케이션의 전반적인 성능을 개선한다2. DB 비용 절감단일 캐시 인스턴스는 수십만 입출력 작..

🎛 프레임 워크란?프레임워크는 애플리케이션의 구조를 정의하고, 개발자가 그 구조 내에서 코드를 작성할 수 있도록 도와주는 일종의 뼈대, 골격이다. 프레임워크는 전체적인 흐름을 제어하고 개발자는 그 안에 필요한 부분을 채워 넣는 방식으로 개발을 진행한다. ♬ 특징제어 역전 (IoC)프레임 워크는 제어 역전 패턴을 적용해서 개발자가 작성한 코드를 호출하는 대신 프레임워크가 개발자가 작성한 코드를 호출한다. 이를 통해 개발자는 애플리케이션의 핵심 비즈니스 로직에 집중할 수 있다.의존성 주입프레임워크는 의존성 주입 패턴을 적용하여 애플리케이션의 객체 간 의존성을 관리해준다. 이를 통해 객체 간 결합도를 낮춘다컴포넌트 기반 아키텍쳐프레임워크는 컴포넌트 기반 아키텍처를 적용해서 애플리케이션의 코드를 재사용 할 수..

🎎 절차 지향과 객체 지향의 차이객체 지향은 절차를 간소화한것이다절차 지향은 데이터와 함수가 분리되고 통일성이 없지만 객체 지향은 좀 더 모듈화 되어 체계적이다절차 지향은 과도한 전역 변수의 사용으로 스파게티 코드 발생, 변경과 확장, 프로그램에 대한 이해가 어렵지만, 객체지향은 코드의 재사용성이 굉장히 좋다절차 지향은 프로그램의 순서와 흐름을 먼저 세우고 필요한 자료구조와 함수를 설계하는 방식객체 지향은 자료구조와 이를 중심으로 한 모듈들을 먼저 설계한 다음에 이들의 실행 순서와 흐름을 짜는 방식🎎 절차 지향과 객체 지향이 정반대일까?위의 그림이 보다 쉽게 이해하기 위해 그려진 그림이다. 딱 보면 알 수있듯이 절차지향은 글을 작성하듯 진행되고 객체지향은 연관관계로 이루어져서 하나의 글을 작성하는 것..
📄 OOP(Object Oriented Programming)은 무엇일까?영어를 그대로 해석한다면 Object(객체) Oriented(지향) 프로그래밍 즉, 객체 지향 프로그래밍의 영어를 약자로 적어 놓을것이다. 그렇다면 객체 지향 프로그래밍은 무엇일까? 바로 인간 중심적 프로그래밍이라고 할 수 있다. 현실 세계의 사물을 객체라고 보고 객체를 기준으로 코드로 나누어 구현한다. 대표적으로 OOP를 지키며 개발하는 것이 바로 Java이다. Java의 클래스는 전체적인 설계도를 뜻하고 직접적으로 일을 하는 것이 바로 인스턴스이다. 그래서 자바는 OOP라고 해도 틀리지 않은 것이다.. 장점다른 클래스를 가져와 사용할 수 있고 상속받을 수 있어 코드의 재사용성이 증가하낟자주 사용되는 로직을 하나의 라이브러리..

🥽 굳이 Feign? 기존에 사용하던 방식은 Feign Client로 데이터를 전달하고 응답을 받아서 이어서 데이터를 처리하는 동기방식을 사용하고 있었다. 하지만 쿠폰서비스에서 유저서비스쪽에 쿠폰이 등록되는 것을 꼭 알아야 할까? 즉, 응답이 필요할 것인가 라는 것이다. 역시 답은 "아니다"라는 것이다. 쿠폰의 발급이 진행되었다면 사용자서비스에 해당 사용자의 상황만을 전달하고 사용자에게 쿠폰을 저장해주는 것은 유저서비스에서 진행하면 되는 것이다. ♬ 비동기 통신그래서 비동기 통신을 해서 데이터를 처리하고자 한다. 기존에 Feign은 필요한 데이터를 응답받기위해 동기방식으로 처리된 것을 확인할 수있지만 굳이 응답을 받지 않고 데이터를 전달해서 해당 서비스에게 해야하는 일을 전달만 해주는 방식을 사용해서 ..

💧 선착순 시스템이번 쇼핑몰 프로젝트를 통해 다양한 도전을 해보았고 이번에는 선착순을 통해 할인 쿠폰을 발급하는 로직을 만들어 대규모 트래픽을 어떻게 조종할 수 있을까하고 생각해보았다. 대표적으로 배민의 쿠폰 할인이 가장 먼저 떠올랐다. 만약 밑의 사진 처럼 딱 정해진 시간에 선착순으로 할인권이 발급된다고 한다면 어떻게 될까?이 때 굉장히 많은 트래픽이 모이게 되고 굉장히 많은 트래픽은 서버를 과부하되게 만들고 문제는 곧바로 서비스의 장애로 이어진다. 그래서 대용량 트래픽이 발생하면 기존의 서비스에 문제가 가지 않도록 처리를 해야한다. 줄을 세워보자세상에 어딜가던 사람이 과하게 몰리면 좀 어렵게 말하면 공급에 비해 수요가 너무 많은 곳이라면 어디든 줄 세우기를 하는 것을 알 수 있다.아주 큰 예로 최..