본문 바로가기

프로그래밍/기타62

Event Sourcing 맛보기 - 이론편 안녕하세요 오늘은 이전 시간에 CQRS에 대해서 알아보는 시간에 이어서 Event Sourcing에 대해서 알아보는 시간을 가져보도록 하겠습니다. Event Sourcing 이란 ? 이벤트 소싱이란 application의 모든 상태를 일으키는 이벤트를 순서에 맞게 저장하여 status를 만들어내는 방법입니다. 먼저 말씀 드리면 사실 일반적인 경우에 필요하진 않습니다. 아니, 대부분의 경우에는 이렇게 구현할 필요하가 없습니다. 하지만 필요한 경우가 있고 장점도 충분히 가지고 있습니다. 설계할 때 몰라서 고려하지 않는 것 보다는 알아두면 좋은 설계 테크닉 정도로 생각하시면 좋을것 같습니다. 먼저 일반적으로 어플리케이션에서 데이터 모델을 저장하는 방법은 현재 상태를 저장하는 방법을 이용합니다. 여기에는 NoS.. 2022. 8. 22.
[기타] 가독성(readable) 좋은 코드와 인지 부하(recognite load)에 대한 고찰 안녕하세요. 오늘은 가독성 좋은 코드란 어떤 코드인가에 대해 우연히 책을 읽다 공감가는 글을 발견 하였고 스스로의 생각을 정리해보면 좋겠다라는 생각을 가지게 되었습니다. 오늘은 제가 생각하는 가독성 좋은 코드는 어떤 코드인가에 대해서 한번 포스팅하려고 합니다. 코드 작성과 가독성 좋은 코드 코드를 작성할 때 가독성(readability)을 신경쓰면서 작성하는 것은 당연한 이야기 입니다. 가독성 좋은 코드란 그 코드를 읽었을 때 이해하기 쉬운 코드를 뜻합니다. 가독성 좋은 코드를 위한 팁과 내용들은 대표적으로 클린코드라는 책이 있고 또한 조금만 검색해도 가독성을 높이기 위한 많은 자료들이 나옵니다. 실제로 프로젝트를 진행하다보면 새롭게 처음부터 작성하는 경우도 있지만 대부분의 경우 기존의 코드를 수정하거나.. 2022. 6. 28.
CQRS(Command and Query Responsibility Segregation) 맛보기 - 실습편 안녕하세요. 이전 포스팅에서 우리는 CQRS는 어떤것이고 어떤 장점과 단점을 가지고 있는지 함께 보는 시간을 가져보았습니다. 오늘은 CQRS를 한번 실습해보는 시간을 가져보도록 하겠습니다. 이전 시간에 CQRS를 설명할 때 두가지 모델뿐만 아니라 CQRS를 지속적으로 이어주기 위한 사이드적인 매커니즘들이 필요하다고 말씀드렸었습니다. 그러한 부분을 함께 보도록 하겠습니다. 1편 : CQRS(Command and Query Responsibility Segregation) 맛보기 - 이론편 환경 오늘 포스팅에서 사용할 환경은 아래와 같습니다. write DB의 DataSource는 MongoDB를 이용합니다. 그리고 Read 모델의 Repository는 Redis 라고 명시해 두었지만 실습이기 때문에 빠른 .. 2022. 6. 25.
CQRS(Command and Query Responsibility Segregation) 맛보기 - 이론편 안녕하세요. 오늘은 CQRS 패턴이란 무엇이고 어떻게 구현하며 이 패턴으로 시스템을 개발하였을 때 어떠한 장점과 단점을 가지는지에 대해서 알아보는 시간을 가져보도록 하겠습니다. DDD와 CQRS CQRS란 무엇인가에 대해서 이야기 하기전에 앞서서 우리는 먼저 DDD에 대해서 이야기를 할 필요가 있습니다. 간단히게 DDD에 대해서 설명하고 넘어가도록 하겠습니다. DDD는 Domain Driven Design의 약자로 어플리케이션을 비즈니스 Domain별로 나누어 설계 및 개발을 진행하는 개발 방법론입니다. 여기서 Domain은 비즈니스를 말합니다. 그리고 DDD에서는 비즈니스 중심으로 개발하면서 비즈니스에 매핑되는 도메인 모델을 가지게 되는데 이는 비즈니스 자체를 추상화한 설계도로써 도메인 서비스의 중심으.. 2022. 6. 16.
[intellij] http를 통해서 E2E(local, server) 테스트를 진행해봅시다 안녕하세요. 많은 분들이 postman을 이용하여 local 테스트를 진행하는 것으로 알고 있습니다. 그런데 사실 intellij 내부에서도 local 테스트를 지원한다는 사실을 알고 있으셨나요? http 파일을 이용하면 intellij에서 local 테스트와 같은 E2E 테스트를 진행할 수 있는데요. 이는 개발이 정상적으로 이루어졌는지 확인하는데 큰 도움이 됩니다. intellij에서 개발하고 intellij에서 테스트 할 수 있다는 것은 좀 더 편하게 개발을 할 수 있다는 뜻인데요. 오늘은 이렇게 개발을 좀 더 생산성 있게 진행하기 위해서 intellij에서 제공하는 http 파일을 이용하여 local 테스트를 진행해보도록 하겠습니다. http 파일 생성 가장 먼저 http 파일을 생성해 보도록 하겠.. 2022. 5. 5.
[React] Backend 개발자가 admin을 만들기 위해 하는 react 정리 1편 - component와 props, 그리고 props.children 안녕하세요. 오늘은 React로 admin 개발을 하면서 공부했던 React를 사용하기 위해서 배웠던 내용을 정리하려고 합니다. 같은 방법에 대해서 고민하셨던 부분이 있으셨다면 이 포스팅으로 해결하셨으면 좋겠습니다. 아마 아주 기초적인 부분들이 주를 이룰것으로 보이기때문에.. 적절히 걸러서 보시는게 좋을 수 있습니다. :) 오늘 정리할 내용은 react에서 component들 사이에 데이터 전달의 기본이 되는 props와 event에 대해서입니다. component(컴포넌트)와 데이터 전달 React에서 Component는 UI를 이루는 HTML을 반환하는 작은 단위입니다. Component는 한번 만들면 원하는 곳에서 재사용하는 것이 가능합니다. Java에서의 class 또는 메서드라고 생각하시면됩니다.. 2022. 4. 22.
[CSS] react를 공부하며 나왔던 CSS 정리 회사에 Admin 만들일이 있어서 react로 개발하게 되었습니다. 그런데 저는 web 관련해서는 거의 전무한 지식을 가지고 있습니다. 그래서 요즘 조금씩 react 공부를하는데 기초가 너무 없으니 배워야할게 많다는걸 느끼고 있습니다. 가장 문제가 되었던게 css에 대해서 지금까지 피해왔던 부분이었습니다. 해당 포스팅에서는 이번에 react를 공부하면서 보았던 css에 대한 기본과 새롭게 배운점을 정리를 해보고자합니다. CSS란 CSS는 Style sheet 언어로 실제 프로그래밍 언어는 아닙니다. HTML 문서에 있는 DOM과 같은 Element들에게 선택적으로 스타일을 적용할 수 있는 언어입니다. 단독으로 사용할수는 없고 HTML과 함께 사용해야합니다. CSS RuleSet body { margin:.. 2022. 3. 19.
[markdown] mermaid를 이용해서 UML 그리기 - 상태(status) 다이어그램 안녕하세요. 오늘은 mermaid를 이용해서 UML을 그려보는 마지막 시간입니다. 오늘 그려볼 다이어그램은 스테이터스 다이어그램입니다. 상태 다이어그램 객체는 특정 상태를 지니며 이 상태는 이벤트와 같은 액션에 의하여 상태는 변경될 수 있습니다. 이러한 객체의 상태와 상태의 변화를 도식화 한 다이어그램이 바로 객체 상태 다이어그램입니다. 한 객체에 대해서 그 상태가 변화됨에 따라 할 수 있는 액션이 바뀔 수 있습니다. 이럴 경우 스테이터스 관리가 중요하게 됩니다. 이런 상황에서 스테이터스 다이어그램은 중요한 도식도가 됩니다. mermaid를 통해서라면 스테이터스 다이어그램 또한 수도코드를 통해서 작성할 수 있습니다. 혹시 상태 다이어그램에 대해서 좀 더 아시고 싶으신 분들은 [UML] 상태 머신 다이어그.. 2022. 2. 2.
[markdown] mermaid를 이용해서 UML 그리기 - 시퀀스 다이어그램 안녕하세요. 오늘은 mermaid에 대해서 알아보는 2번째 시간입니다. 오늘은 mermaid를 이용하여 시퀀스 다이어그램을 그리는 방법에 대해서 알아보도록 하겠습니다. 시퀀스 다이어그램(Sequence Diagram) 시퀀스 다이어그램은 여러 참여하고 있는 컴포넌트들의 상호작용 다이어그램입니다. 이 다이어그램은 시간 순서대로 프로세스가 어떤 흐름을 가지는지를 보여줍니다. 아래는 제 개인 프로젝트에서 이루어지고 있는 파일 업로드 기능에 대해서 시퀀스 다이어그램을 그려본 예제입니다. 이렇듯 mermaid를 이용하면 쉽게 수도코드만으로 시퀀스 다이어그램을 그릴 수 있는것을 확인할 수 있었습니다. 시퀀스 다이어그램에 대해서 궁금하신 분들은 [UML] 시퀀스 다이어그램 이해하기를 참고해주시기 바랍니다. seque.. 2022. 1. 16.
[markdown] mermaid를 이용해서 UML 그리기 - 플로우차트 안녕하세요. 오늘은 mermaid에 대해서 알아보는 시간을 가져보도록 하겠습니다. mermaid란 markdown 문법으로 diagram을 그려주는 라이브러리입니다. mermaid 란 ? mermaid는 markdown으로 UML을 그릴 수 있는 언어입니다. 이 mermaid를 이용하면 쉽고 직관적으로 UML을 그릴 수 있습니다. 수도 코드를 통해서 작성하기 때문에 다이어그램 뿐만 아니라 수도 코드를 통해서도 흐름을 이해할 수 있다는 것도 장점이라고 여겨집니다. 그렇다면 실제로 mermaid를 사용하는 방법에 대해서 알아보도록 하겠습니다. plugin mermaid를 사용하기 위해서는 markdown에 plugin이 필요합니다. editor 별 plugin 리스트를 참조해서 본인이 사용하시는 edito.. 2022. 1. 9.
[gradle] buildSrc를 이용한 gradle 의존성 관리 안녕하세요. 오늘은 gradle의 의존성 관리를 좀 더 명확하고 유지관리하게 쉽게 할 수 있는 gradle의 buildSrc에 대해서 알아보는 시간을 가져보도록 하겠습니다. 빌드 도구의 상수와 함수 코딩을 하면 기본적으로 자주 사용하는 함수 또는 상수에 대해서 별도의 파일로 선언하여 여러 곳에서 참조할 수 있게합니다. 이렇게 함으로써 중복 코드를 줄이고 코드의 가독성도 높일 수 있습니다. 이건 이 글을 읽고 있는 개발자이신 여러분들에게는 기본적인 것이겠지요. gradle 에서도 buildSrc를 이용하면 이러한 방법으로 script를 작성할 수 있다는 사실을 알고 있으셨나요 ? buildSrc를 이용하면 build script를 더 쉽게 유지보수하고 가독성을 향상시킬 수 있습니다. buildSrc와 in.. 2021. 11. 22.
[gradle] gradle의 퍼포먼스를 늘릴 수 있는 유용한 정보 및 옵션들 요즘은 spring의 빌드 도구로 java, kotlin을 가리지 않고 gradle을 많이 사용합니다. 오늘은 이와 관련된 주제로 gradle의 퍼포먼스를 늘릴 수 있는 유용한 정보 및 옵션드에 대해서 알아보는 시간을 가져보도록 하겠습니다. 의존성을 주입할 때 dynamic version 보다는 static version을 사용하자 일반적으로 의존성을 주입할 때 dnynamic version 보다는 static version을 사용하는 것을 권장합니다. 이유는 버전을 dynamic version으로 하게되면 이후 특정 모듈의 버전이 올라감에 있어서 호환성 이슈가 발생할 수 있기 때문입니다. 이와는 별개로 static version을 사용하는것이 좋은 이유가 있습니다. 바로 성능적인 문제입니다. grad.. 2021. 10. 13.