반응형

Computer Science/Tech 8

[Teah] Load Balancer(로드 밸런서)

로드 밸런서 4차 산업혁명 시대가 되고 인터넷을 통해 거의 모든 작업들이 처리되고 있습니다. 웹툰부터 시작해서 페이스북 좋아요나 유튜브 스트리밍까지 모든 전자기기가 인터넷을 이용해 통신하고 있습니다. 그로 인해 하나의 서버가 모든 트래픽의 부하를 감당하지 못하는 상황이 오게 됩니다. 이에 따라 분산 시스템을 구축하게 되는데, 쉽게 말해 같은 작업을 하는 여러대의 서버를 띄워서 트래픽을 여러 대의 서버가 분산해서 처리하게 되는 형태입니다. 이때 클라이언트의 요청을 이로간성있게 여러 대의 서버로 분산시켜주는 기술을 바로 로드 밸선싱이라고 합니다. 로드 밸런서는 서버에 가해지는 부하를 분산해주는 장치 또는 기술을 통칭하는 단어로서 클라이언트와 서버 사이에서 한 대의 서버에 부하가 집중되지 않도록 트래픽을 관리..

[Tech] IEEE754 부동 소수점(Floating Pointing)

일반적으로 사람은 정수를 표현할 때 10진수를 사용하여 표현합니다. 하지만 컴퓨터는 사람과 달리 2진수를 이용해 수를 표현해야 하기 때문에 자릿수에 따라 의미를 부여하는 방식을 이용해 수를 표현하곤 합니다. 대표적인 방식으로 부호화 방식이 있는데, 2진수로 표현된 수의 제일 앞자리를 부호비트로 사용하여 0일 경우 양수로 표현하고 1일 경우 음수로 표현하는 방법입니다. 그렇다면 음수는 어떻게 표현할까요? 음수를 표현하는 방식은 크게 두 가지로 나누어집니다. 고정 소수점 정수를 표현하는 비트와 소수를 표현하는 비트의 비트 수를 사전에 미리 정해두고 해당 비트만큼 의미를 부여하여 소수를 표현하는 방식입니다. 예를 들어 실수 표현에 4byte(32bit)를 사용하고, 부호 표현에 1bit, 정수 표현에 16bi..

[Tech] 암호화 알고리즘

무언가 서비스를 개발하게 된다면 필수적으로 고려되어야 하는 사항이 바로 보안입니다. 보안은 다양한 방법으로 고려될 수 있지만 그 중 가장 기본적이면서도 중요한 것이 바로 암호화가 아닐까 싶습니다. 하지만 암호화란 그 종류가 다양하고, 지금도 계속해서 새로운 암호화 알고리즘이 개발되고 있습니다. 저 역시 서버 개발을 해오며 암호화를 해왔지만, 암호화의 종류에 대해 깊이 알지는 못했는데 http, https를 공부하며 다양한 암호 알고리즘이 존재하고 필요에 따라 선택하여 사용한다는 사실을 알게되어 공부한 내용을 바탕으로 해당 포스팅을 작성하게 되었습니다. 먼저 암호화 알고리즘에서 자주 사용하는 단어들을 정리하고 넘어가도록 하겠습니다. 평문(Pnaintext) : 해독 가능한 암호화 되지 않은 메세지. 암호문..

[Tech] Protocol Buffer: Serialization에 관하여, 모두가 JSON을 쓴다고 하여 JSON만이 정답일까?

이 포스팅은 우연히 google cloud api를 사용하던 중 response 객체가 json 타입이 아니라는 사실을 알게 되면서, '왜 당연하듯 모두가 json객체를 사용하는가?'라는 의문에서부터 시작된 공부이다. 이 블로그의 모든 포스팅이 그러하듯 먼저 Serialization(직렬화)가 무엇인지부터 시작해보도록 하겠다. Serialization란? 직렬화란 시스템 내부에서 사용하는 객체를 다른 시스템에서도 사용할 수 있도록 바이트(byte)형태로 데이터를 변환하는 기술을 뜻한다. (반대로 다시 객체 형태로 변환하는 기술은 역직렬화라고 부른다.) 이를테면 Java에서 사용하던 객체 방식과 ruby on rails나 Node.js에서는 형식이 다를 수 있기 때문에 모두가 같은 데이터를 사용할 수 있도..

[Tech] JWT(Json Wet Token)이란?

JWT 이전에는 세션 방식을 이용해서 로그인 기능을 구현했지만, 최근엔 JWT라는 토큰 기반의 인증 방식이 나오면서 웹과 모바일에서 대부분의 인증이 JWT로 구현되고 있다. JWT(Json Wet Token)는 클레임 토큰 기반 인증 방식으로 인증에 필요한 정보를 암호화시켜 토큰 body에 저장함으로써 클라이언트가 증명서처럼 사용한다. 세션과 비교 하였을 때 JWT JWT는 세션과 비교하였을 때 무상태(stateless)와 확장성(scalability)의 이점이 있다. 토큰은 클라이언트에서 저장하기 때문에 서버측에서는 stateless하며, 요청이 왔을 때 서명이 옳바른지만 확인하면 되므로 비저장의 이점을 지닌다. 또한 msa와 같은 서버가 여러대로 분리되어 사용되고 있다면 어떤 유저가 로그인 햇을 때 ..

[Tech] MSA(Microservice Architecture)란?

Monolithic Architecture MSA에 대해 이해하기 위해서는 먼저 그에 상반된 모놀리틱 아키텍처에 관해 이해할 필요가 있다. 모놀리틱 아키텍처란 전통적인 소프트웨어 아키텍처 스타일로써 하나의 서버에 UI와 비즈니스 로직, 그리고 데이터베이스까지 베포 되는 것으로 하나의 서비스 또는 에플리케이션이 하나의 거대한 아키텍처로 구성되는 것을 의미한다. Monolithic 스타일로 아키텍처를 구성하면 하나의 중앙 관리적인 구조로써 통합된 서비스를 구축하기 때문에 통제가 편리하고, 단순한 아키텍처 구조로 인해 초기 개발의 용이성이 있지만 아키텍처의 크기가 커짐에 따라서 확장성에 대한 복잡성이 심각하게 증가한다. Microservice Architecture MSA(Microservice Archite..

[Tech] MVC 디자인 패턴이란?

디자인 패턴이란? 디자인 패턴이란 개발을 하는 중에 발생했던 문제점들을 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 특정한 규약을 쉽게 접근할 수 있는 형태로 만든 것을 말한다. MVC란? MVC란 Model, View, Controller의 약자이다. Model은 데이터에 관련된 것이다. 게시판을 예로 들자면, 게시판에 있는 모든 글들은 데이터베이스에 데이터로 저장되게 된다. 이때 데이터의 형식을 지정하고 저장하고 불러오는 것과 같은 코드들이 Model에 속한다. 이러한 데이터들을 html과 css 등으로 시각적으로 볼 수 있게 해주는 영역이 View 파트이다. 마지막으로 model의 데이터를 view에 연결해서 사용자가 view 화면에서 model의 데이터를 gui로 읽고 쓰고 지우게 할 수 ..

[Tech] session/cookie 방식이란?

HTTP protocol의 특성 http protocal의 대표적인 특징 중 하나는 상태를 유지하지 않는다는 것이다. 클라이언트가 한번 요청을 하고 서버에서 응답을 하면 해당 클라이언트와 서버는 연결을 유지되지 않는다는 것이다. 위의 그림과 같이 http 프로토콜은 상태를 유지하지 않기 때문에 첫 번째 클라이언트의 요청에 대해서 서버가 응답을 보내면 똑같은 클라이언트가 두 번째 요청을 했을 때 서버에서는 두 번째 요청을 한 클라이언트가 첫 번째 요청을 한 클라이언트인지 인식하지 못한다. 이러한 특징 때문에 서버는 동시에 여러 개의 요청을 효과적으로 처리할 수 있지만 로그인, 장바구니 등 상태가 유지되어야 할 프로그램을 작성하기에는 무리가 있다. 이러한 단점을 보완하기 위한 방법이 바로 세션이다. Sess..

반응형