본문 바로가기

전체 글

(50)
Decorator 패턴 Decoratorattach new behaviors to objects by placing these objects inside special wrapper objects that contain the behaviors.참고자료refactoring.guruhead first design patterns 서적UMLClient 여러 데코레이터로 wrapping하여 추가 작업(concrete decorator에서 정의한) 실행 가능Component > wrappers and wrapped objects를 위한 인터페이스나 추상 클래스Concrete Component 실제로 wrapped 되는 subclass로, 기본 기능에 해당Base Decorator > wrapping 시킬 object의 상위 인터페이스..
Strangler 패턴 Strangler Pattern이 글은 다음 글(Micro service architecture for the legacy codebase)을 번역하였습니다. 새로운 기능과 기능이 도입되면 application의 복잡성이 극적으로 증가하고 코드를 유지보수하거나 새로운 기능을 추가하는 것이 더 어려워집니다. 이러한 application은 Big Ball of Mud가 됩니다. 팀은 이렇게 복잡한 application을 유지보수하기 위해서 계속해서 노력해야 하고, 누군가는 새로운 기술이나 hosting, 아키텍쳐 패턴으로 대체할 것을 제안하게 됩니다. 그런데 전체 솔루션을 대체하는 것은 매우 어렵습니다.업계에서는 microservice, serverless architecture라는 유행어가 있어 왔습니다...
랜딩 페이지에서 문의 글 이메일로 전송하기 계기1인 사업을 하시는 대표님이 자사몰을 cafe24를 통해서 만드셨는데, 잘 안되는 부분이 있어서 나에게 문의를 하였다. 대학원에서 인연이 된 분이셔서 자사몰을 만들 때 다소의 도움을 드린 부분이 있어 유지보수(?) 차원에서 도움을 드리게 된 것이다. 개발이라기 보다는 cafe24 서비스 툴을 어떻게 활용해야 하는지, provider에서 제공하지 않는 기능을 어떻게 추가할 수 있는지에 대한 문제를 해결해드리는 것이 이번 미션이었다. cafe24 자사몰 이용기본적으로 cafe24에서는 상품 분류 및 결제 시스템, 홈페이지 내 진열과 관련된 ui 기능들과, 기타 문의사항 관련된 게시판들을 기본적으로 제공한다. 아마 무료버전이라 제한적인 기능을 제공하고 있는 것으로 생각되었다. 내가 도움드린 부분은 다음의 ..
Toss Slash 24 - 대규모 사용자 기반 서비스 운영 - (2) Toss Slash 24 - 대규모 사용자 기반 서비스 운영 - (1)이전 글에서 toss slash24에서 인상 깊었던 세션에 대해서 글을 적었었는데, 이를 실제로 간단한 코드로 구현해보고자 한다. 전체 세션 내용을 모두 적용하기에는 무리가 있어, 전체 중 '장애대응' 부분에 한해서 살펴보고자 한다.핵심은 Coordinator 서버를 두어 api 제공기관 시스템 트래픽을 자동으로 제어하고자 하는 것이다.기존 resilience4j를 사용했을 때는 서버 단위로 서킷 브레이커가 적용되어 차단 메커니즘에 왜곡이 있어, 전체 인스턴스 단위로 서킷 브레이커를 적용하자는 취지다. 추가하여 canary 배포 방식에 맞춰 처음과 끝 인스턴스 2대를 master 서버로 설정해 api 호출이 가능한지 지속 체크해준다.배..
json 역직렬화 성능 측정(feat. jackson, gson, JSONObject) - 2 1. json 역직렬화(feat. jackson)2. json 역직렬화 성능 측정(feat. jackson, gson, JSONObject)개요저번 글에서 jackson이 역직렬화를 어떻게 수행하는지 메서드 콜 스택을 뜯어 소스코드를 직접 살펴보며 알아보았다. 이 때 한 가지 의문점이 있었는데, 정말 성능적인 차이가 있는 것이냐는 문제다.일반적인 설명으로는 jackson이 streaming api를 이용해서 데이터를 메모리에 모두 올려두지 않고 token('{', ':' 등의 구분자를 토큰으로 명명해둠)로 메모리에만 올려서 해석한 뒤에 flush 시켜서, 성능적으로 더 우위가 있다고 말한다. 하지만 'jackson이 성능적으로 정말 이점이 있는가?'에 대해서는 따져볼 필요가 있다고 판단했다.jmhJMH(..
json 역직렬화(feat. jackson) 1. json 역직렬화(feat. jackson)2. json 역직렬화 성능 측정(feat. jackson, gson, JSONObject)개요spring 프레임워크를 사용하고 있다면 request dto 객체를 만들고 @RequestBody 어노테이션을 붙이면 자동으로 json desirialization을 통해 객체 매핑하여 요청값을 처리할 수 있다.사내에서는 spring이 아닌 다른 공통 프레임워크를 사용하고 있는데, fixed length 방식으로 요청/응답을 처리하고 있으므로 json 형식의 데이터는 취급하고 있지 않다. 다만, 다양한 모듈의 요청/응답(메서드 파라미터와 응답값을 포함)에 대한 송수신 객체를 유사 wrapper 클래스로 처리하고 있는데, json 역직렬화에 대한 api 지원이 마..
[개인기록] gps 기반 출퇴근 시스템 간편 일지(3) 지난 기록12월 초에 mvp를 만들어서 매니저님께 말씀드린 후에 팀장님 포함 보임자 회의 시에 계획을 설명해달라고 하셨다. 팀장님도 긍정적으로 검토하신다고 하셔서 그냥 들어가는 것보다는 바쁘신 분들에게 정리하여 말씀드리기 위해 ppt까지 만들었는데, 업무 때문에 계속 바쁘셔서 회의에 참석할 수 없었다ㅠ 서비스 고도화 프로젝트가 곧 오픈하는 건이 있었는데 그 일 때문에 바쁘신거겠지.. 이해하였다.회의날에 안부르시길래 매니저님께 슬쩍 다시 말씀드렸는데 회의가 너무 오래걸려서 깜빡했다고 미안하다고 하셨다. 그 다음날 회의에 부르겠다고 하셨는데 또 안 부르셔서.. 흐음.. 긍정적으로 생각하지 않으시는데 에둘러 거절하시는건가.. 하였다. 그래도 포기할 수 없어서 로비에서 서성이는 팀장님이 보이시길래 일부러 어슬렁..
[개인기록] gps 기반 출퇴근 시스템 간편 구현 일지(2) 지난 기록gps 기반 출퇴근 시스템을 만들겠다고 일요일 저녁에 마음을 먹고 백엔드 서버 구성을 마친 뒤 월요일 저녁에 다시 손을 댔을 때, 조금만 더 하면 MVP 완성인데라는 생각에 결국 새벽에 MVP는 구현해냈다.웹페이지 및 Geolocation API 연동월요일에 진행한 내용은, 백엔드 서버는 구성해서 프로세스를 띄워두었으니 프론트 웹페이지를 만들고 로컬 서버와 통신 테스트를 한다. 단순한 fake 로그인 기능을 만들고 버튼 클릭 시 출근 api를 호출하게 하였다. 이후 Geolocation API를 연동해 출근지 기준 위도와 경도를 설정한 뒤에 허용 범위에 따라 출근 로직을 수행하게 만들었다.중간에 fake 로그인 기능을 만들면서 users 스키마 변경이 조금 있었고 백엔드 orm domain 로..