2024/03 12

Zustand란 무엇인가?

개요 1. Zustand의 특징 2. 다른 라이브러리와 비교 3. 사용 방법 ✅ Zustand 우리는 Client state를 관리하기 위해서 상태 관리 라이브러리를 사용해야하는데 현재 update가 활발하게 이루어지고 있으며 사용량도 꾸준히 증가하고 있는 Zustand에 대해서 알아보겠습니다. (Jotai를 개발한 회사에서 만들었다고 한다.) 📦 Zustand의 개발 이유 React에서 일어나는 3가지 문제점에 대한 해결책을 제시하기 위해 제작되었다고 한다. Zombie children: 하위 컴포넌트인 "A"에서 실행하던 어떠한 일이 끝나기 전 상위 컴포넌트가 unmount되었을 시에 A가 작업을 끝낸 후 화면세엇 사라져도 메모리를 지속적으로 잡아먹는 문제 React concurrnecy: 우선순위를..

CS/프로그래밍 2024.03.23

MSA(마이크로서비스 아키텍처)

[ MSA(마이크로서비스 아키텍처) ] MSA는 여러 개의 작은 서비스로 구성되어 각 서비스가 독립적으로 개발되고 배포되는 구조 즉 하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍쳐 ▶ MSA의 등장배경 Monolithic Architecture는 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어있는 형태 아직까지는 많은 소프트웨어가 Monolithic 형태로 구현되어 있음 소규모 프로젝트에는 Monolithic Architecture가 훨씬 합리적임 간단한 Architecture이고, 유지보수가 용이하기 때문 하지만 규모가 커지게 되면Monolithic Architecture 단점이 명확함 서비스/프로젝트가 커지면 커질수록, 영향도 파악 및 전체 시..

CS/프로그래밍 2024.03.23

디자인 패턴 - 팩토리 패턴 / 전략 패턴 / 옵저버 패턴

1. 팩토리 패턴(Factory Pattern) 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴이다. 상위 클래스와 하위 클래스가 분리되기 때문에 느슨한 결합을 가지며 상위 클래스에서는 인스턴스 생성 박식에 대해 전혀 알 필요가 없기 때문에 더 많은 유연성을 갖게 됩니다. 그리고 객체 생성 로직이 따로 떼어져 있기 때문에 코드를 리펙토링하더라도 한 곳만 고칠 수 있게 되어 유지 보수성이 증가된다. 예를 들면, 라떼 레시피와 아메리카노 레시피, 우유 레시피라는 구체적인 내용이 들어 있는 하위 클래스가 컨베이어 벨트를 통해 전달되고, 상위 클래스인 바리스..

CS/프로그래밍 2024.03.22

SOLID 원칙

개요 1. SOLID 원칙이란? 2. 단일 책임 원칙 (SRP) 3. 개방 폐쇄 원칙 (OCP) 4. 리스코프 치환 원칙 (LSP) 5. 인터페이스 분리 원칙 (ISP) 6. 의존관계 역전 원칙 (DIP) ✅ SOLID 원칙이란? 소프트웨어 개발의 다섯가지 설계 원칙을 나타내는 약어로 각 원칙을 통해 소프트웨어의 재사용성, 유연성, 확장성을 높일 수 있으며 이는 쉬운 유지 보수를 가능하게 한다. 단일 책임 원칙 (SRP, Single Responsibility Principle) 개방 폐쇄 원칙 (OCP, Open Close Principle) 리스코프 치환 원칙 (LSP, Liskov Substitution Principle) 인터페이스 분리 원칙 (ISP, Interface Segregation Pr..

CS/프로그래밍 2024.03.16

메모리 관리

[ 메모리 관리 ] 각각의 프로세스는 독립된 메모리 공간을 갖고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려있음. 단지, 운영체제 만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않기 때문에 운영체제에서 메모리를 관함. 또한, 멀티프로그래밍 환경으로 변화하면서 한정된 메모리를 효율적으로 사용해야 했고, 운영체제가 이를 어떻게 관리하는지에 대한 관리방법이 중요해짐 즉, 어떤 프로그램이든 프로세스가 되어 프로세서에 적재되기 위해서는 메모리에 적재되어야 실행이 가능함 따라서 메모리는 중요한 작업 공간이고 한정된 메모리를 다중 프로그래밍 환경에서 이용하기 위해서는 여러 프로세스가 함께 메모리를 사용하므로 효율적인 관리를 해야함 이러한 메모리 관리를 위해 메모리..

CS/컴퓨터 구조 2024.03.10

EC2란?

1. EC2란 무엇인가? 3. 마무리 ✅ EC2란 무엇인가? Amazon Elastic Computed Cloud의 준말로 AWS 클라우드에서 온디맨드 확장 가능 컴퓨팅 용량을 제공하여 하드웨어 비용 절감 및 빠른 애플리케이션 배포를 목적으로 사용하는 클라우딩 컴퓨팅 서비스 사용한만큼 비용을 지불하기에 Elastic(탄력적)이라는 용어가 붙었으며, 비용뿐만아니라 성능, 용량 또한 자유롭게 조절할 수 있다. 우리는 물리적으로 서버를 구축하여 사용하는 것보다 더욱 빠르고 간편하고 적은 비용을 들이고 효율적으로 서버를 구축하기 위해 클라우딩 컴퓨팅 서비스를 이용할 수 있다. 📌 온디맨드 확장 가능하다? 더보기 사용자가 필요할 때마다 실시간으로 컴퓨팅 리소스를 추가하거나 줄일 수 있다는 의미로 이러한 유연성을 ..

CS/네트워크 2024.03.10

JWT - 어떻게 사용해야하는가?

1. JWT란 무엇인가? 2. 왜 JWT를 사용해야하는가? 3. JWT는 안전한가? 4. 토큰 탈취는 어떻게 이루어지는가? 5. 나는 어떤 방법으로 보안을 강화해야할까? ✅ JWT(JSON Web Token)란 무엇인가? 웹에서 사용되는 JSON 형식의 토큰에 대한 표준 규격으로 사용자의 인증, 인가 정보를 서버와 클라이언트 간에 안전하게 주고 받기 위해 사용되는 토큰이다. header, payload, signature로 구성되어 있으며 Base64-URL 문자열 형태로 "."을 통해서 구분되어 있다. 📦 header 일반적으로 토큰 유형과 서명 알고리즘으로 구성되어 있으며 JWT의 첫 번째 부분을 구성한다. { "alg": "HS256", "typ": "JWT" } 📦 payload 세가지 유형의 클..

CS/네트워크 2024.03.06

Jotai 상태관리 라이브러리란?

Jotai는 Daishi Kato에 의해 만들어졌으며, React 상태 관리의 단순성과 효율성을 개선하려는 목적에서 만들어졌다. Recoil과 MobX와 같은 기존 상태 관리 솔루션들이 제공하는 강력한 기능을 유지하면서도, 단순하고 직관적인 API를 제공하여, 개발자들이 쉽게 상태 관리를 할 수 있도록 설계되었다. Jotai는 일본어로 '상태'를 의미하며, Jotai는 그 사용성과 유연성으로 인해 빠르게 인기를 얻었고, 다양한 규모와 유형의 프로젝트에서 사용되고 있다. npm trend에서 recoil과 비교하면 recoil을 역전한 것을 볼 수 있는 꽤 핫한 라이브러리이다. 1. jotai의 기본 개념과 atom 생성 방법 Jotai는 atom개념을 사용하며, atom은 작은 데이터를 담고 있다. us..

메모리

메모리 계층 구조(Memory Hierarchy)는 여러가지 기억장치를 필요에 따라 속도, 용량, 성능에 따라 계층적으로 나누어 둔 것을 의미함. 하위 계층으로 갈수록 용량이 늘어나고 가격이 저렴하지만 속도가 느리며 상위계층으로 갈수록 용량이 작고 가격이 비쌈 이를 보완하기 위해 메모리 계층 구조를 사용함 레지스터와 캐시 CPU 내부에 존재(CPU에 아주 빠르게 접근할 수 있음) 메모리 = 주기억장치 CPU외부에 존재(레지스터와 캐시보다 더 느리게 CPU에 접근) 하드디스크 = 보조기억장치 CPU가 직접 접근할 방법조차 없음 CPU가 하드 디스크에 접근하기 위해서는 하드디스크의 데이터를 메모리로 이동시키고 메모리에서 접근해야 하기에 아주 느린 접근만 가능함 ▶ 보조기억 장치 보조기억장치는 물리적인 디스크..

CS/컴퓨터 구조 2024.03.02

메모리와 캐시 메모리

✅ RAM의 특징과 종류 📦 RAM의 특징 실행할 프로그램의 명령어와 데이터가 저장되는 메모리로 전원을 끄면 저장된 명령어와 데이터가 날아가는 휘발성 저장 장치로 CPU는 보조기억장치에 직접 접근을 하지 못하기에 실행하고 싶은 프로그램이 보조기억장치에 있다면 RAM으로 복사하여 저장한 뒤 실행한다 즉 실행할 대상이 저장되는 공간이다. 📌 비휘발성 저장 장치 더보기 하드 디스크, SSD, CD-ROM, USB 메모리와 같은 보조 기억장치로 전원이 꺼져도 저장된 내용이 유지된다. 📦 RAM의 용량과 성능 RAM의 용량이 작다면 보조기억장치에서 실행할 프로그램을 가져오는 일이 잦아 실행 시간이 길어지기에 RAM의 용량이 크면 많은 프로그램들을 동시에 빠르게 실행하는데 유리하다. RAM의 용량에 비례해서 실행 ..

CS/컴퓨터 구조 2024.03.02