전체보기
[gRPC] Protocol Buffere(proto3) 소개, 사용법
Protocol Bufferes 구조화된 데이터를 직렬화 하기 위한 구글의 언어 중립적, 확장 가능한 메커니즘이다. 데이터를 한 번 구성하는 방법을 정의한 후에 특수 생성된 소스 코드를 사용하여 다양한 데이터 스트림과 다양한 언어를 사용하여 구조화된 데이터를 쉽게 쓰고 읽을 수 있다. Protocol Buffere은 IDL로서 data structure를 정의한 다음, proto파일을 protocol buffere compiler를 통해 컴파일한다. 컴파일된 소스코드를 사용하여 데이터를 읽고 쓴다. Protocol Bufferes는 현재 Java, Python, Objective-C, C++을 지원하고 proto3의 경우 Kotlin, Dart, Go, Ruby, C#을 추가적으로 지원한다. Proto3..
[Clean Code] 1장 깨끗한 코드
데이브 토마스 “깨끗한 코드란 다른 사람이 고치기 쉽다고 단언한다.” 마이클 페더스 “깨끗한 코드는 언제나 누군가 주의 깊게 짰다는 느낌을 준다.” 중복과 표현력에 신경써서 코드를 작성하자. “중복줄이기, 표현 높이기, 초반부터 간단한 추상화 고려하기, 한 기능만 수행하라.” 프로그램을 단순하게 보이도록 만드는 열쇠는 언어가 아니다. 언어를 단순하게 보이도록 만드는 열쇠는 프로그래머다. 저자 우리는 저자다 @author필드는 저자를 소개한다. 저자가 있다는 것은 독자가 있다. 그리고 저제에게는 독자와 잘 소통할 책임이 있다. 우리는 새 코드를 짜면서 끊임없이 기존 코드를 읽는다. 그 말은 기존 코드가 읽기 쉬워야 쓸때 편하다는 것이다. 보이스카우트 규칙 “캠핑장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠..
[gRPC] gRPC 개념, RPC, IDL비교(XML, JSON, Protocol Buffer)
gRPC란? 구글이 개발한 오픈 소스 원격 프로시저 호출 시스템(RPC)이다. 호출을 위해 TCP/IP 프로토콜과 HTTP2.0 프로토콜을 사용하고 IDL(Interface Definication Language)로 protocol buffer를 사용한다. RPC(Remote Procedure call)란? 한 프로그램이 네트워크의 세부 정보를 이해하지 않고도 네트워크 안의 다른 컴퓨터에 있는 프로그램에서 서비스를 요청하는 프로토콜 HTTP 2.0 HTTP(Hypertext Transfer Protocol)는 웹 환경에서 사용되는 통신 프로토콜로 OSI 7 Layer에서 최상위인 Application Layer에서 사용한다. 더보기 HTTP에 대한 역사 [Network] HTTP(Stateful Stat..
[CS] 컴퓨터의 구성(Software, Hardware, SystemBus)
컴퓨터의 구성 하드웨어(Hardware): 컴퓨터를 구성하는 기계적 장치 소프트웨어(Software) : 하드웨어의 동작을 지시하고 제어하는 명령어 집합 하드웨어(Hardware) CPU(중앙처리장치) : 프로그램의 모든 정보를 처리하는 역할을 담당한다. RAM(주기억 장치) : 프로그램 실행과 휘발성 데이터를 저장하는 공간 HDD,SDD(보조기억 장치) : 내장형 기억 장치로 비휘발성 데이터를 저장하는 공간 IO Device(마우스, 프린터, 모니터 등) 소프트웨어(Software) 시스템 소프트웨어(System Software) : OS, 로더, 장치 드라이버, 컴파일러 응용 소프트웨어(Application Software) : 크롬, 유튜브, 멜론 등 펌웨어(Firmware) 특정 하드웨어 장치에..
[DB] 동시성 이슈(Concurrency Issue)
동시성(Concurrency) 동시성은 운영체제에서 사용되는 용어로 동시에 실행되는 것처럼 보이는 것으로 논리적인 개념으로 싱글코어와 멀티코어에서 가능하다. 해당 글에서 사용되는 DB에서의 여러개의 스레드(요청)이 동시에 같은 주소의 값(데이터)을 참조하여 접근 및 수정하는 것을 의미한다. 예를들어, 트랜젝션 A가 알렉스라는 이름을 읽고 트랜젝션 B가 밥을 추가해 같은 트랜젝션에서 1번의 리드와 3번의 리드가 다른 것을 확인한다. 유령 레코드가 나타나는 현상으로 이를 팬텀리드(Phantom Read)라 한다. 일반적으로 문제 해결 방식에는 두 가지 방법이 존재한다. 1. 비관적 동시성 제어 데이터를 비관적으로 바라보며 다른 요청에 의해서 수정될 가능성을 염두하여 Lock을 거는 방식이다. 데이터베이스의 ..