기술 노트 6

Event Sourcing(이벤트 소싱)에 대하여

들어가며 it 업계의 막내들로서 함께 재밌게 스터디하고있는 친구들한테 접하게 된 키워드인데 생소한 내용이라 개념적으로나마 정리해보려고합니다. 차후에 팀에서 관련된 작업을 맡게되거나 도입을 고려할 때 조금 더 제가 쓸모있어지길 바라며 ㅎㅎ 개요 이벤트 소싱은 상태에 대한 변경 사항을 모두 저장하는 개발 패턴입니다. 이게 무슨 의미냐면 가령 서버개발을 할 때 DB에 연산이 된 결과값을 저장합니다. 하지만 이벤트 소싱은 순차적으로 발생하는 이벤트를 모두 저장합니다. 리팩터링 등의 유명한 책을 쓰신 마틴 파울러는 "애플리케이션의 모든 상태를 순서에 따라 이벤트로 보관"이라고 정의를 내리셨더라구요. 그럼 이벤트 소싱은 왜 쓸까요? 사용 목적 모든 갱신 이력 데이터를 저장해 해당 데이터를 통해 과서 상태로 회귀(재..

기술 노트 2022.10.25

[웹을 지탱하는 기술] URI의 스펙

URI의 중요성 URI는 Uniform Resource Identifier의 약자로, 직역하자면 '유니폼 리소스 식별자'다. 즉, URI란 '리소스를 통일적으로 식별하는 ID'를 말한다. 통일적이란 모두가 같은 규칙을 따르고 있다는 것이며, 식별자란 어떤 것을 그 밖의 다른 것과 구별하여 가리키기 위한 이름/ID를 말한다. URI를 사용하면 웹상에 존재하는 모든 리소스를 한결같은 방식으로 뵤여줄 수 있다. 즉, URI만 있으면 모든 리소스에 간단하게 접속할 수 있게된다. URI의 구문 간단한 URI의 예 http://blog.example.com/entries/1 이 URI를 구성하는 파트는 다음과 같다. URI Scheme http 호스트명 blog.examples.com 패스 /entries/1 UR..

기술 노트/웹 2021.04.28

[웹을 지탱하는 기술] REST 웹의 아키텍처 스타일 - 03

REST는 아키텍처 스타일이므로 실제로 시스템(웹 서비스와 그 이외도 포함)을 설계할 때는 그 시스템의 아키텍처를 만들어야만 한다. REST에 기초한 아키텍처를 구축할 경우라도 REST를 구성하는 스타일 중 몇 가지를 제외하더라도 상관없다. 예를 들어, 쿠키 정보 등을 통해 세션에 값을 저장하도록 하여 스테이트풀 하지만, URI 형식 등은 REST의 제약에 따르는 아키텍처도 생각해 볼 수 있다. 말 그대로 설계 작업이기에 소프트웨어와 시스템의 설계에서는 아키텍처 스타일의 이상과 타협해야만 하는 부분도 나온다. 보다 적합한 다른 아이텍처 스타일이 있기 때문에 무엇보다도 대부분의 REST 스타일을 제외해야만 하는 경우에 무리하게 REST를 채용할 필요가 없다. 예를 들어 서버를 거치지 않고 피어(Pear)사..

기술 노트/웹 2021.04.17

[웹을 지탱하는 기술] REST 웹의 아키텍처 스타일 - 02

스타일을 조합하여 REST를 구성 REST는 복수의 아키텍처 스타일을 조합하여 구축한 복합 아키텍처 스타일이다. 클라이언트/서버 웹은 HTTP라는 프로토콜을 이용해 클라이언트와 서버가 서로 통신하는 클라이언트/서버의 아키텍처 스타일을 채용하고 있다. 즉, 클라이언트가 서버에 요청(Request)을 보내면, 서버는 클라이언트에 대해 응답(Response)을 돌려준다. 클라이언트/서버의 이점은 단일 컴퓨터 상에서 모든 것을 처리하는 것이 아니라, 클라이언트와 서버로 분리해서 처리할 수 있다는 점이다. 이렇게 되면, 클라이언트를 멀티 플랫폼으로 구성할 수 있다. (웹이 PC, 스마트폰, etc Device를 통해 접속 할 수 있는 것이 예이다.) 또한, 유저 인터페이스는 클라이언트에서 담당하기 때문에 서버는 ..

기술 노트/웹 2021.04.17

[웹을 지탱하는 기술] REST 웹의 아키텍처 스타일 - 01

아키텍처 스타일의 중요성REST는 웹의 아키텍처 스타일이다. (=아키텍처 패턴)이는 복수의 아키텍처의 공통된 성질, 양식, 규정 혹은 독특한 방식을 가리키는 말이다.아키텍처 스타일에는 MVC(Model-View-Controller)와 파이프 앤 필터(Pipe and Filter), 이벤트 시스템(Event System)등이 있다. 아키텍처 스타일로서의 RESTREST는 네트워크 시스템의 아키텍처 스타일이다.네트워크 시스템의 아키텍처 스타일로서 가장 유명한 것은 클라이언트/서버(Client/Server)이다.그리고 웹은 클라이언트/서버 이기도 하다.즉, 웹의 아키텍처 스타일은 REST이기도 하지만, 클라이언트/서버이기도 하다.추상화 레벨웹에서의 예아키텍처 스타일REST아키텍처브라우저, 서버, 프록시, HT..

기술 노트/웹 2021.04.17

[웹을 지탱하는 기술] 웹이란 무엇인가?

모든 것의 기반인 웹 현 시대의 모든 것에 가장 중요한 소프트웨어는 웹을 열람하는 소프트웨어인 브라우저(Browser)이다. 다양한 웹의 용도 웹 사이트 웹사이트는 포털 사이트, 쇼핑 사이트, 검색사이트, 블로그 등이 있다. 웹 사이트의 시스템 구성은 PC베이스의 UNIX서버 1대인 경우부터 수 천, 수 만대의 서버를 조합한 대규모인 경우까지 다양하다. 하지만 웹 사이트 내부가 어떤 구성을 하고 있는지 클라이언트가 의식하지 않아도 되는 점은 웹의 공통적인 특징이다. 유저 인터페이스로서의 웹 프로그램을 위한 API로서의 웹 유저 인터페이스로서의 웹은 인간 중심의 인터페이스, 하지만 API로서의 웹은 프로그램 중심의 인터페이스이다. API는 프로그램을 위한 인터페이스이기 때문에 데이터 포맷으로는 XML(Ex..

기술 노트/웹 2021.04.17