/images/logo.png

inshining

가능한 최선을 다해 살고 싶다.

MSA는 왜 쓸까?

MSA는 무엇인가요? msa(Micro Service Architecture)는 느슨하게 결합된 서비스 컴포넌트의 조합으로 구성된 아키텍처이다. 채용 공고를 보면 팀마다 사용하는 언어와 프레임워크가 다른 경우가 있는데. 이 경우 msa를 적용한 것으로 추측해볼 수 있다. 그렇다면 왜 msa 방식이 많이 쓰이기 된 걸까? 기존 아키텍처와 다른 점이 있을까? MSA 이전 아키텍처? MSA가 유행하기 이전에 일반적인 소프트웨어 아키텍처의 형태는 모놀리식이었다. 모놀리식 구조는 단일 컴퓨팅에 모든 코드가 담겨있다. 만약 서비스 규모가 커지기 시작하면 다음과 같이 3 가지 단점을 나타날 수 있습니다.

마이크로 서비스를 구성하기 위한 통신 방법 : gRPC

gRPC 이전에 RPC에 대해 알아보자 RPC? (Remote Procedure Call) 프로세스 단에서 함수를 호출하여 코드를 실행하곤 한다. 이를 원격(Remote)하는 기술이 RPC이다. 하나의 머신에서 다른 머신의 코드를 실행하는 기술인데. 사용자 입장에서 마치 단순 함수를 호출하는 것과 같다. gRPC? gRPC는 구글에서 만든 RPC 기술의 구현체이다. gRPC는 크게 두 가지 특징이 있다. 프로그래밍 언어에 제약 없이 사용할 수 있는 기술임 빠른 통신 속도 gRPC는 REST 통신 방법과 같이 클라이언트와 서버로 구성되어 있다. 요청과 응답이라는 액션이라는 점에서 REST와 같지만 http/2를 기반으로 하기 때문에 고성능과 걍량화에 최적화된 네트워크 통신을 자랑한다.

어떻게 CORS가 생겼을까?

원래 SOP(Same Origin Policy)로 시작하였다. SOP는 동일 출처 정책이라고 번역된다. 동일한 출처끼리 상호작용만 허용하는 정책을 의미한다. 같은 출처끼리 리소를 주고 받아야 했다. 출처(Origin)란? 출처 출처(Origin) = protocal + host + port 프로토콜, 호스트, 포트 모두 동일해야 동일한 출처라고 할 수 있다. https://www.example.com:443 을 기준으로 같은 출처인지 알아보자 1. https://test.example.com:443 -> 호스트가 달라서 다른 출처이다. 2. http://www.example.com:80 -> 프로토콜과 포트가 달라서 다른 출처이다. 3. https://www.example.com:8080 -> 포트가 달라서 다른 출처이다. SOP의 필요성 SOP는 웹 보안을 위한 기본 워칙이다.

ORM은 무엇인가요? (+장고 코드로 알아보기)

ORM (Object Relational Mapping) ? 관계형 데이터베이스(RDBMS)를 객체형으로 매핑해주는 기술이다. 데이터는 어디에 보관되는가? 결제 정보와 같이 중요한 데이터를 메모리에 저장하게 된다고 가정해보자. 서버 컴퓨터의 전원이 나가게 되면 데이터가 날아간다. 이러한 데이터를 영원히 저장하기 위해서 파일 시스템이나, 관계형 데이터 베이스 혹은 객체 데이터베이스를 이용한다. ORM을 사용하는 이유 관계형 데이터베이스과 객체 지향 프로그래밍 사이 형태 차이가 존재한다. 데이터를 마치 객체와 같이 사용하기 위해서 관계형 데이터베이스와 클래스 사이를 연결해줘야하는데. 이 역할을 ORM이 한다.

HTTP 왜 존재할까?

HTTP HTTP(Hypertext Transfer Protocol) 클라이언트와 서버 사이 하이퍼텍스트 기반 데이터를 전송하는 프로토콜이다. 하이퍼텍스트는 링크가 담긴 텍스트이다. html 를 뜯어보면 다른 페이지를 갈 수 있는 링크가 달려 있고, css나 이미지와 같은 리소스를 가져올 수 있는 링크가 입력되어 있다. HTTP의 구성 요소 클라이언트 클라이언트(브라우저, 앱 프로그램)은 서버에 특정 자료 혹은 페이지에 대한 요청을 보낸다. 클라이언트는 절대 응답하지 못하여 서버가 될 수 없다. 서버 서버는 클라이언트와 반대로 클라이언트의 요청에 응답해주는 존재이다. HTTP 프로토콜은 클라이언트와 서버로 구성되고, 요청과 응답이라는 액션으로 작동한다.

Python 멀티 스레드

멀티 스레드? 멀티 스레드는 하나 프로세스 내에서 복수 스레드가 동시에 작업을 수행하는 것이다. 멀티 스레드 환경에서 스레드끼리 메모리를 공유하지만 각 스레드 마다 registers, stack, pc 모두 독립적으로 존재한다. 파이썬으로 구현해보는 멀티 스레딩 기본적으로 파이썬에서 하나 프로세스에 하나 스레드 작업을 수행하지만 threading을 이용하면 스레드 작업을 해 볼 수 있다. from threading import Thread import time def job(id, start, end, result): print(f"job Id : {id}") total = 0 for i in range(start, end): total += i result.