[회고] 2024년 하반기 - 무용(無用)을 사랑하는 마음 들어가며오랜만에 집에 오는 자식을 위해 정성껏 식사를 준비하고, 자식의 가계에 조금이나마 보탬이 되고자 반찬을 투박하게 담으며, 눈 오는 날 안전히 돌아가길 바라는 마음으로 시야에서 보이지 않을 때까지 눈을 맞으며 배웅하는 당신의 모습이 유독 선명히 보였습니다. "조금이라도 챙겨줄 수 있을 때 챙겨주고 싶다"는 말을 반복하던 당신의 모습에서 자식들에게 쓸모없는 사람이 되면 어떻게 해야 할까 와 같은 두려움이 느껴지는 듯했습니다. 유용했던 당신의 젊음을 맞바꿔 타낸 졸업장을 당신 품에 안겨드리는 지금에서야 무용해지고 있다고 느낄지 모를 당신을 지켜야 할 차례가 되었음을 깨닫습니다. 이번 하반기는 유용한 존재로 남을 수 있도록 끊임없이 노력하는 당신을 닮은 형태로, 내가 속한 팀에서 나의 쓸모를 증명하기 .. [Project] 프로젝트 삽질기68 (feat ECR tag 관리) 들어가며 AWS ECR에 빌드한 Docker Image를 업로드할 때 tag를 latest로 설정했습니다. 그 후 latest 태그가 붙은 이미지를 이용해서 배포하는 과정에서 문제가 생겼는데, 어떤 문제가 생겼고 문제를 어떻게 해결했는지 공유하고자 합니다. 문제 정리첫 번째, 롤백이 안 되는 문제가 있었습니다. 배포 과정에서 문제가 생기면 롤백해야 했는데, ECR에는 모두 latest 태그가 붙은 이미지만 존재했습니다. 그래서 문제가 발생하는 latest 버전이 아닌 이전 버전으로 롤백을 하려고 하더라도, 현재 문제가 발생하는 latest 태그의 Docker 이미지로 컨테이너를 만들어야 했습니다. 즉 latest 태그를 유지함으로써 서버를 롤백할 수 없는 문제가 있었습니다. 두 번째는 버전 관리.. [Project] 프로젝트 삽질기67 (feat DOO 단위 테스트) 들어가며 이 글에서 비즈니스 로직과 이벤트 전달 로직을 분리하는 과정을 공유했습니다. 이번 글에서는 테스트 코드를 활용해서 이벤트를 전달하는 코드가 호출되었는지, 그리고 이벤트를 전달하는 코드를 호출하기 위해 어떤 객체가 전달되었는지 확인한 방법을 공유하고자 합니다. 그 과정에서 테스트 코드를 어떻게 작성했는지 함께 공유하겠습니다. 테스트 코드 작성 준비기존 코드는 아래와 같이 구성되어 있었습니다. 만약 아래 코드로 단위 테스트를 작성한다면, 테스트 코드를 작성하기 어렵습니다. hackle, amplitude SDK를 직접 제어하기 어렵고, sdk를 활용해서 외부에 데이터를 전달하는 것이기 때문에 테스트를 하기 위해서는 외부의 환경에 의존해야 합니다. 문제를 해결하기 위해선, 직접.. [Project] 프로젝트 삽질기66 (feat DOO, Enum 클래스) 들어가며팀에서 데이터 드리븐한 의사결정을 할 수 있도록 핵클, 앰플리튜드에 데이터를 적재하는 환경을 구축하고 있습니다. 데이터를 전달하기 위해 비즈니스 로직에 이벤트 전달 코드를 함께 작성했습니다. 그러다 핵클, 앰플리튜드에 전달해야 하는 이벤트 전달 코드가 점진적으로 많아지면서 코드의 가독성을 해치게 되었고 하나의 클래스에서 여러 책임을 갖게 되는 문제가 발생했습니다. 이 글을 통해 제가 겪은 문제를 어떻게 해결했는지 공유하고자 이 글을 씁니다. 이벤트 전달하기먼저 유저의 회원가입을 처리하는 클래스가 있다고 가정하고 간단한 샘플 코드를 살펴보겠습니다. 만약 유저가 언제 회원가입을 했는지 알기 위해 핵클과 앰플리튜드에 이벤트를 전달하고 싶다면 다음과 같이 코드를 구성할 수 있을 것입니다.. [회고] 2024년 상반기 - 등대가 되었던 사람 들어가며 평생을 미련하게 살아온 당신을 생각합니다. 고등학교에 가지 못하고 벽돌을 날랐던 탓인지 당신의 왼쪽 어깨는 주저앉았고, 미화원으로서 거리를 청소하기 위해 긴 시간을 무릎 닳도록 걸은 탓인지 당신은 다리를 절뚝여야 했습니다. 방 안 가득 퍼져 있는 코를 찌르는 당신의 파스향을 맡을 때에도 당신의 고단했던 하루를 크게 신경 쓰지 않았던 것 같습니다. 어느 늦은 저녁 당신으로부터 걸려온 전화를 받았습니다. 집 근처 벤치에 앉아있다는 간단한 상황만을 공유한 채 당신은 전화를 끊었습니다. 설마 하는 생각에 벤치 앞에 갔을 땐, 길을 걷다가 무릎에 힘이 들어가지 않아서 걷지 못하고 주저앉아버린 당신의 모습을 볼 수 있었습니다. 도움 없이는 걷지 못하는 당신에게 도움이 되고자 손을 건넸습니다. 당신의 손을.. [Project] 프로젝트 삽질기65 (feat 나이스 인증 3) 들어가며 본인확인 기능을 개발하기 위해 팀에서는 나이스 본인확인 서비스를 도입했습니다. 나이스에서 제공하는 개발 가이드를 보면서 도입을 해야 했는데, 배경 지식이 전혀 없는 상황에서 도입을 하려고 하니 여러 삽질을 거쳐야만 했습니다. 나이스 인증을 도입하는 다른 분들이 저와 같은 어려움을 겪지 않았으면 하는 바람으로, 나이스 인증 기능을 어떻게 도입했는지를 상세하게 작성해 보려 이 글을 적습니다. 나이스 인증 결과 복호화저번 글에서는 NICE 표준창을 호출하기 위해 요청 정보를 반환하는 과정을 살펴봤습니다. 다음은 유저가 NICE 표준창을 활용해서 인증을 완료하면 인증 결과가 서버 쪽으로 전달되도록 8번부터 11번까지의 과정을 살펴보겠습니다. 이 과정을 코드를 보면서 따라가고 싶.. [Project] 프로젝트 삽질기64 (feat 나이스 인증 2) 들어가며 본인확인 기능을 개발하기 위해 팀에서는 나이스 본인확인 서비스를 도입했습니다. 나이스에서 제공하는 개발 가이드를 보면서 도입을 해야 했는데, 배경 지식이 전혀 없는 상황에서 도입을 하려고 하니 여러 삽질을 거쳐야만 했습니다. 나이스 인증을 도입하는 다른 분들이 저와 같은 어려움을 겪지 않았으면 하는 바람으로, 나이스 인증 기능을 어떻게 도입했는지를 상세하게 작성해 보려 이 글을 적습니다. 나이스 본인확인기관 토큰을 발급받는 과정을 저번 글에서 살펴봤습니다. 다음은 유저가 나이스 본인인증 요청 버튼을 클릭하면 NICE 표준창을 호출할 수 있도록 로직을 구현해 보겠습니다. 3번부터 7번까지의 과정을 살펴보겠습니다. 이 과정을 코드를 보면서 따라가고 싶으신 분들은 코드를 레.. [Project] 프로젝트 삽질기63 (feat 나이스 인증 1) 들어가며 본인확인 기능을 개발하기 위해 팀에서는 나이스 본인확인 서비스를 도입했습니다. 나이스에서 제공하는 개발 가이드를 보면서 도입을 해야 했는데, 배경 지식이 전혀 없는 상황에서 도입을 하려고 하니 여러 삽질을 거쳐야만 했습니다. 나이스 인증을 도입하는 다른 분들이 저와 같은 어려움을 겪지 않았으면 하는 바람으로, 나이스 인증 기능을 어떻게 도입했는지를 상세하게 작성해 보려 이 글을 적습니다. 나이스 본인확인나이스평가정보에서 제공하는 API는 여러 종류가 있는데, 본인인증(통합형)을 도입하는 방법에 대해 알아보겠습니다. 이 과정을 코드를 보면서 따라가고 싶으신 분들은 코드를 레포지토리에 올려두었으니 함께 확인해 주시면 됩니다. GitHub - epitone/nice-.. [Project] 프로젝트 삽질기62 (feat sentry 잘 활용하기) 들어가며서버에 에러가 발생했을 때, 고객이 어떤 문제를 겪는지 빠르게 파악하고 싶어서 Sentry 환경을 구축했습니다. Sentry의 기본 기능만 활용하면서 Sentry를 보다 잘 활용한다면, 에러 핸들링을 조금 더 잘할 수 있지 않을까 싶어서 Sentry 활용 방법을 바꿨는데요. Sentry를 보다 잘 사용하기 위해 삽질한 내용을 공유하고자 글을 씁니다. 기존 Sentry 활용서버에서 발생하고 있는 에러를 탐지하기 위해 nest-raven 라이브러리를 활용해서 sentry를 활용했습니다. import { Module } from '@nestjs/common';import { APP_INTERCEPTOR } from '@nestjs/core';import { RavenInte.. [Project] 프로젝트 삽질기61 (feat IAM MFA 강제) 들어가며NestJS와 PostgreSQL, TypeORM을 활용하여 프로덕트를 만들고 있습니다. 프로덕트가 성장하면서 AWS 콘솔에 접근해야 하는 팀원이 조금씩 늘었습니다. 팀원들이 보다 안전하게 AWS 콘솔에 접근할 수 있는 환경을 구성하고 싶었습니다. 이를 위해 MFA 인증을 등록해야만 AWS 콘솔에 접근할 수 있도록 환경을 구축했습니다. 그럼 AWS 콘솔에 처음 접근하는 사용자에게 MFA 설정을 강제하려면 어떻게 해야 하는지 공유해 보려 합니다. MFAMFA는 사용자가 계정에 로그인할 때 패스워드 입력 후 OTP와 같은 추가적인 인증 단계를 거쳐 보안을 강화하는 기술입니다. MFA를 활용하면 계정에 대한 무단 접근을 방지하고 보안을 강화할 수 있습니다. AWS는 고객의 데이터를 .. 이전 1 2 3 4 ··· 19 다음