전체 글 81

Node.js Graceful Shutdown 적용

시작하며Node.js 서버에서 금전적인 행위를 처리하는 배치 작업이 종료(Shutdown)될 때 안전하게 종료되지 않아 특정 유저의 출금이 두 번 발생하는 문제가 종종 발생했다. 원인을 분석해보니, Shutdown 시점에 출금 처리는 되었으나 데이터 처리까지 완료되지 않아, 다음 배치 작업에서 중복 출금이 발생하는 문제였다. 이를 해결하기 위해 Graceful Shutdown을 도입하는 과정에서 배운 점들을 기록하였다.Graceful Shutdown이란?직역하면 우아한 종료로, 애플리케이션이 완전히 종료되기 전에 진행 중인 모든 작업을 마무리하고, 리소스를 해제하며 데이터의 무결성을 유지한 상태로 안전하게 종료되는 과정을 의미한다.Node-schedule 사용Node.js에서 스케줄업무를 하는 라이브러리..

Cloud/Server 2024.10.30

Readable Code

시작하며Readable Code: 읽기 좋은 코드를 작성하는 사고법 강의를 보고 정리한내용으로,회사의 서비스 개선을 준비하는 단계에서 우리팀에 적용해보면 좋겠다. 라는 생각이 들어 정리한 내용입니다. 이름짓기1. 단수와 복수를 구분하기~(e)s를 붙여 변수, 클래스 등 단수인지, 복수인지 구분2. 이름줄이지 않기관용어처럼 많은 사람들이 자주사용하는 줄임말 정도만 사용하고, 무분별한 줄임말은 자제 또한, 줄임말이 이해될 수 있는 것은 문맥때문이기에 문맥을 잘 활용ex) column -> col, latitude -> lat, longitude -> lon 3. 은어 / 방언 사용하지 않기일부 팀원 / 현재의 우리팀만 아는 용어금지새로운 사람이 팀에 합류했을때 용어를 이해하기 힘들다.도메인 용어 사용하기팀단..

Backend 2024.10.02

Git Action을 활용한 CI/CD Pipeline 구축하기

시작하며개발자라면 누구나 CI/CD라는 용어를 들어봤을 것입니다. 저도 AWS 프리티어를 이용해 간단히 CI/CD 파이프라인을 구축해본 경험만 있고, 사내에서는 이미 구축된 시스템을 사용해왔기 때문에 직접적인 경험은 부족했습니다. 이 글에서는 사내에서 신규 프로젝트의 CI/CD 파이프라인을 구축한 경험을 공유하고자 합니다. 저처럼 경험이 부족한 분들에게 간접적인 경험을 통해 조금이나마 도움이 되길 바랍니다. 실제 구축하면서 여러 차례 Git Action Failure가 발생하여 구글링을 통해 해결하였으며, 모든 설정 파일을 완벽하게 외우지는 못하지만, 대략적인 그림이 그려진다면 다른 환경에서도 작업이 가능할 것이라 생각됩니다.먼저 CI/CD란 무엇인가? 대표적인 CI/CD 툴로는 Jenkins, GitH..

Cloud/AWS 2024.06.11

5. 책임과 메시지

의도는 "메시징"이다. 훌륭하고 성장 가능한 시스템을 만들기 위한 핵심은 모듈 내부의 속성과 행동이 어떤가보다는 모듈이 어떻게 커뮤니케이션하는가에 달려 있다. 자율적인 책임자율적인 객체란 스스로 정한 원칙에 따라 판단하고 스스로의 의지를 기반으로 행동하는 객체다. 타인이 정한 규칙이나 명령에 따라 판단하고 행동하는 객체는 자율적인 객체라고 부르기 어렵다.객체가 어떤 행동을 하는 유일한 이유는 다른 객체로부터 요청을 수신했기 때문이다. 요청을 처리하기 위해 객체가 수행하는 행동을 책임이라고 한다. 따라서 자율적인 객체란 스스로의 의자와 판단에 따라 각자 맡은 책임을 수행하는 객체를 의미한다.적절한 책임이 자율적인 객체를 낳고, 자율적인 객체들이 모여 유연하고 단순한 협력을 낳는다. 따라서 협력에 참여하는 ..

4. 역할, 책임, 협력

우리 모두 합친것보다 더 현명한 사람은 없다. 객체지향 설계의 전체적인 품질을 결정하는 것은 개별 객체의 품질이 아니라 여러 객체들이 모여  이뤄내는 협력의 품질이다. 훌륭한 객체 지향 설계자는 객체들간의 요청과 응답 속에서 창발하는 협력에 초점을 맞춰 애플리케이션을 설계한다. 협력이 자리를 잡으면 저절로 객체의 행동이 드러나고 뒤이어 적절한 객체의 상태가 결정된다.협력책의 파이를 훔친 하트 잭을 읽고 객체지향 관점에서 재판 자에면에 등장하는 모든 등장인물들은 객체다. 왕과 하얀 토끼, 모자 장수라고 불리는 객체들은 하트 잭을 재판하기 위해 서로 협력하고 있다. 즉, 이야기에 등장하는 객체들은 하트 잭의 재판이라는 동일한 목적을 달성하기 위해 협력하고 있다. 왕의 증인 호출 요구(요청), 증인의 입장(응..

카테고리 없음 2024.05.08

3. 타입과 추상화

일단 컴퓨터를 조작하는 것이 추상화를 구축하고, 조작하고, 추론하는것에 관한 모든것이라는 것을 깨닫고 나면 (훌륭한) 컴퓨터 프로그램을 작성하기 위한 중요한 전제 조건은  추상화를 정확하게 다루는 능력이라는 것이 명확해진다. 책의 해리백 이야기를 읽고추상화를 통한 복잡성 극복현실에 존재하는 다양한 현상 및 사물과 상호작용하기 위해서는 우선 현실을 이해해야한다. 문제는 복잡성의 총체인 현실이라는 괴물을 그대로 수용하기에는 인간이 지니고 있는 인지 능력과 저장 공간이 너무나도 보잘것 없다. 따라서 사람들은 본능적으로 이해하기 쉽고 예측 가능한 수준으로 현실을 분해하고 단순화하는 전략을 따른다. 해리백의 지하철 노선도는 불필요한 지형 정보를 제거함으로써 단순함을 달성한 추상화의 훌륭햔 예이다. 진정한 의미에서..

3년동안 방치된 증권사 폐쇄망 레거시 프로젝트 배포하기

시작하며해당 글은 제목에서 보셨듯이 3년동안 방치된 증권사 폐쇄망  레거시 프로젝트를 배포하며 필자의 우당탕탕 경험을 작성하였다. 사내에서 간단한 변경개발 건이라며 000사의 프로젝트를 받게되었다. 해당 프로젝트의 초기 개발자들은 이미 퇴사한 팀장 급 분들이 개발하셨고, 남은 우리팀의 팀장님만 해당 프로젝트의 간략한 히스토리를 알고계셨다.서버 프로젝트는 Admin, App으로 총 2개의 프로젝트로 구성되어 있으며, 환경은 아래와 같다.프로젝트 구성구분버전AdminJava1.8Spring2.3.1Apache Tomcat AppJava1.8Spring Boot2.3.1 여기서 문제는 폐쇄망이라는점과 코드의 히스토리를 아는사람이 없다 라는것이다. Admin 서버의 경우 프로젝트를 Clone 받은 후 Sprin..

Record/회고록 2024.05.02

2. 이상한 나라의 객체

객체지향 패러다임은 지식을 추상화하고 추상화한 지식을 객체 안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리하려고 한다.객체를 발견하고 창조하는 것은 지식과 행동을 구조화하는 문제다. 객체지향 패러다임은 인간이 인지할 수 있는 다양한 객체들이 모여 현식 세계를 이루는 것처럼 소프트웨어의 세계 역시 인간이 인지할 수있는 다양한 소프트웨어 객체들이 모여 이뤄져 있다는 믿음에서 출발한다. 책의 이상한 나라의 앨리스 파트를 읽고 앨리스는 정원으로 가는길을 가로막고 있는 작은 문을 통과하기에 적당한 상태로 자신의 키를 계속해서 변화시킨 것이다.앨리스의 키는 시간의 흐름에 다라 계속 변한다. 그렇다고 엘리스의 키가 아무런 이유없이 변하는것은 아니고, 앨리스의 키를 변화시키는것은 앨리스의 행동이다. 앨리스가 ..

1. 협력하는 객체들의 공동체

시작하며24년 4월 실무경력 1년을 경험한, 연차로는 2년차 개발자가 되었다. 지난 1년을 생각해보면 실무 경험 및 나름의 공부를하며, 성장을 해왔지만 실무 경험에 맞춰 개발 및 장애대응을 하다보니 천천히 기초에 집중하기보다는 급하게 달려온 느낌이들었다. 또한 최근 자바 플레이그라운드 with TDD, 클린 코드 인강을 구매하여 숫자야구게임을 개발하면서 Java라는 언어를 사용하지만, 객체지향적으로 프로그래밍하지못하고 있는자신을 발견하여 객체지향에 대해 공부를 하기로 마음먹었다.  책을 읽으며 무조건 책의 내용을 정리하기보다는 책의 내용 정리 및 나의 생각을 녹여내고시간이 지나 책의 내용이 기억이 나지않을때 다시 읽어보기위해 기록하였다. 시너지를 생각하라. 전체는 부분의 합보다 크다. 객체지향이라고 불..