[Design Pattern] Command Pattern 커맨드 패턴에 대해 알아보자!
·
BOOK
학습목표캡슐화를 더 높은 수준으로 끌어올려보자어떻게? 메서드 호출을 캡슐화를 통해메서드 호출을 캡슐화하면 계산 과정의 각 부분을 결정화할 수 있기에 계산하는 코드를 호출한 객체는 그 일이 어떤 식으로 처리되는지 전혀 신경 쓸 필요가 없다.캡슐화된 메서드 호출을 로그 기록용으로 저장한다거나 재사용으로 취소 기능을 구현하는 일과 같이 스마트한 일도 할 수 있다.커맨드 패턴이란?요청 내역을 객체로 캡슐화하여 객체를 서로 다른 요청 내역에 따라 매개변수화가 가능하다.이러한 요청을 큐에 저장하거나 로그로 기록하거나 작업 취소 기능을 사용할 수 있다.커맨드 객체일련의 행동을 특정 리시버와 연결함으로써 요청을 캡슐화한 것이다. 그렇기에, 행동과 리시버를 하나의 객체에 넣고 execute()라는 메서드 하나만 외부에 ..
분산락과 네임드락 그리고... 동시성
·
Spring
목차 서론 동시성을 제어해야 하는 이유 동시성 네임드 락 분산 락 분산 락을 활용할때 Redis를 활용하는 이유 Lettuce vs Redisson Redisson 내 tryLock()과 Semaphore 예제 서론 최근, DB관련 공부를 진행하며 이전부터 동시성을 제어할 수 있는 방법으로 LOCK을 사용할 수 있음을 알고 있었는데, 위 내용을 현재 제가 사용하고 있는 Spring Boot에 접목시켜 봄으로써 이에 대한 리마인드와 저의 생각들을 정리해 보고자 글을 작성하게 되었다. 동시성을 제어해야 하는 이유 동시성을 그렇다면 왜 제어해야 할까요? 동시성을 제어하지 않는다면 발생되는 이유는 다음과 같습니다. Race condition 두 개 이상의 스레드가 동시에 같은 데이터를 접근하여 값을 변경하고자 ..
[Design Pattern] Factory Pattern 팩토리 패턴에 대해 알아보자!
·
BOOK
서론오늘은 팩토리 패턴에 대해 알아보려고 한다. 헤드퍼스트 디자인패턴 책을 너무나 재미있게 읽고 있다. 알기 쉽게 그림이나 예제들을 통해 확인해 볼 수 있고 설명도 잘 되어있는 느낌이 많이 들었다. 사람마다 좋아하는 책 스타일은 다르겠지만… 나와 같은 성향인 분들에게는 한 번쯤은 꼭 읽어봐도 좋을 것 같다고 이야기하고 싶은 책이랄까…? 거두절미하고 시작해 보겠다. 팩토리 패턴의 학습목표부터 살펴보겠다.느슨한 결합으로 객체지향 디자인을 만들어보자!new 연산자를 사용한다고 해서 새로운 객체가 만들어지지 않는다.객체의 인스턴스를 만드는 작업을 공개하면 결합적인 문제가 발생할 수 있다.팩토리 패턴은 불필요한 의존성을 없애서 결합 문제를 해결할 수 있다. new 연산자new 연산자는 자바의 뼈대를 이루는 연산자..
2023년 첫달을 마무리하는 1월의 회고
·
회고
2023년 계묘년이 찾아오고 1월이 벌써 얼마 남지 않은 이 시점 미리 쓰는 1월의 회고다. 1월의 전체 키워드를 잡아보자면, "새 출발을 위한 잠깐의 휴식과 열심히 다시 해야겠다는 자극을 받은 달"이라고 이야기할 수 있을 것 같다. 갑작스럽게 찾아왔던 새해병 새해가 다가오고 갑작스럽게 머리가 아프거나, 급격한 무기력감에 잠시동안 빠졌다. 이유는 지금 와서 생각해도 잘 모르겠다... 갑자기 나도 모르게 팍 하고 찾아왔던 것 같다.... ( 물론 오래가진 않았다 ) 새해병이 들었나? 라고 나름 네이밍을 붙여 위로를 해보거나 푹 쉬는 등 나름대로의 조치를 취해보았다. 12월부터 나름대로의 스트레스 해소법을 찾았었고 1월에 갑작스럽게 찾아왔을 때 찾았던 해소법을 기반으로 나름대로 해소를 잘하여 잘 넘길 수 있..
[Design Pattern] Decorator Pattern 데코레이터 패턴에 대해 알아보자!
·
BOOK
서론 디자인 패턴 중, 데코레이터 패턴은 이전 건수님께서 프로젝트 적용 시 해당 패턴을 이용해 구현을 하시고 이에 대해 기술블로그까지 작성과 리뷰를 해주신 적이 있어서 이 패턴에 대해 당시 찾아봤던 경험을 가지고 있다.  혹시나 궁금하신 분들이 계실수도 있으니, 해당 부분에 대해 링크를 첨부하고자 한다. https://zuminternet.github.io/vote-architecture/ OOP 기반 선착순 투표 시스템 아키텍처선착순 투표 시스템과 앞으로 확장적으로 늘어날 투표 시스템 아키텍처에 대해 OOP 기반으로 구성한 것을 공유합니다.zuminternet.github.io 내용이 정말 좋아서 관심있으신분들은 한 번씩 읽어보셔도!? 좋을 것 같다.  위와 같은 이유들로 데코레이터 패턴에 대해 한번 ..
[Design Pattern] Observer Pattern 옵저버 패턴에 대해 알아보자!
·
BOOK
서론 최근, 헤드퍼스트 디자인패턴이라는 책을 통해 디자인 패턴을 공부하고 있다.  오브젝트를 읽고, 해당 책을 보니 내용을 그림으로 설명해주기도 하고 비유를 해주시며 설명을 하니, 머리에 쏙쏙 들어오는 느낌이 들었다.  아무튼, 해당 책을 기반으로 여기서 나오는 디자인 패턴들을 기억하고 리마인드를 해보고자 게시물을 하나씩 적어보려고 한다.  옵저버 패턴옵저버 패턴 ( Observer Pattern ) 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고, 자동으로 내용이 갱신되는 방식으로 일대다 ( One-to-many ) 의존성을 정의한다.  하나의 객체의 상태가 변경되면 그 객체를 의존하는 모든 객체는 연락을 받게 된다.  그림을 통해 알아보면 다음과 같다.  간략하게 그려보는데, ..
2022년 회고 : 12월회고 + 한해를 돌아보며 자체 연말결산하기
·
회고
12월의 한 해가 저물며, 이제 새로운 해를 앞두고 있다. 나름 부족하긴해도, 그동안의 인생을 살며 "한 해 동안 열심히는 살았네"라는 생각이 들며 뿌듯한 한 해였던 것 같다. 2022년을 돌아보며 각 월마다의 회고를 간단하게 해보며 돌아보려고 한다. 2022년 1월 당시 성남에서 진행했던 인턴십 프로젝트를 진행하였다. 당시, 내가 기존에 아는 사람들 외 정말 새로운 사람들과 함께 현업을 진행하며 프로젝트를 진행하였던 기억이 아직도 새록새록 난다. 당시 때 내 마음을 돌아보면 정말 조급했던것 같다. 뭔가 보여주고싶었고, 그동안 내가 프로젝트라는 갈증이 있던걸 이번 기회를 통해 털어내고 해소시키고 싶었다. 그렇기에, 정말정말 노력을 많이했던 것 같다. 물론 당시때 나는 완벽하지 않고 의욕이 정말 앞섰기에 ..
프로젝트 회고 : Let's Parking!
·
Project
프로젝트 동기 현재, 사내에서는 주차 신청을 하루마다 구글폼을 통해 작성을 진행하고 있다. 자동차를 통해 출근을 하시는 분들의 경우, 사내 주차를 이용하기 위해 매일 구글폼에 직접 작성을 진행하고 계신다. 하지만, 출근을 한 이후 일 혹은 회의 등 여러 가지 복합적인 이유로 정말 가끔 주차를 까먹고 신청을 못하는 경우가 생겼었다. ( 물론 나도 그랬다.. ) 그렇기에 다른 팀원분들은 모르겠으나 우리팀의 경우 항상 매일매일 슬렉을 통해 주차신청을 서로에게 리마인드를 하며 주차 신청을 진행하고 있었다. 또한, 휴가인 경우 휴가를 즐기다 깜빡하고 당일날 주차신청을 하지 못한다면 ㅠ_ㅠ 다음날 차량을 이용하지 못하는 경우도 생겼다. 그렇기에, "동일한 내용을 매일매일... 작성하는데 한번 입력해놓으면 알아서 내..