본문 바로가기

[Project] 프로젝트 삽질기61 (feat IAM MFA 강제) 들어가며NestJS와 PostgreSQL, TypeORM을 활용하여 프로덕트를 만들고 있습니다. 프로덕트가 성장하면서 AWS 콘솔에 접근해야 하는 팀원이 조금씩 늘었습니다. 팀원들이 보다 안전하게 AWS 콘솔에 접근할 수 있는 환경을 구성하고 싶었습니다. 이를 위해 MFA 인증을 등록해야만 AWS 콘솔에 접근할 수 있도록 환경을 구축했습니다. 그럼 AWS 콘솔에 처음 접근하는 사용자에게 MFA 설정을 강제하려면 어떻게 해야 하는지 공유해 보려 합니다.            MFAMFA는 사용자가 계정에 로그인할 때 패스워드 입력 후 OTP와 같은 추가적인 인증 단계를 거쳐 보안을 강화하는 기술입니다. MFA를 활용하면 계정에 대한 무단 접근을 방지하고 보안을 강화할 수 있습니다. AWS는 고객의 데이터를 ..
[Project] 프로젝트 삽질기60 (feat aws-vault) 들어가며NestJS와 PostgreSQL, TypeORM을 활용하여 프로덕트를 만들고 있습니다. AWS 환경에서 인프라를 관리하면서 문득 aws-cli 환경에 접근할 때 조금 더 안전하게 접근하려면 어떻게 해야 할까 알아보면서 aws-vault에 대해 알 수 있었습니다. aws-vault를 활용한다면, aws의 credentials 정보를 조금 더 안전하게 관리할 수 있다고 생각했습니다. 그럼 aws-vault를 어떻게 활용할 수 있는지 알아보겠습니다.                 aws-vaultAWS CLI를 로컬 환경에서 사용하는 경우 보통 access_key와 secret_key를 발급받습니다. 그리고 aws configure 명령어를 입력하여 사용자의 access_key, secret_key를..
[일기장] 사랑하는 사람을 지킬 수 있는 사람 사랑하는 사람을 지키기 위해 고군분투하는 사람을 존경한다. 자신의 불편함을 기꺼이 감수해서라도 누군가를 지키고자 하는 그 고결하고 숭고한 마음은 어디에서 오는 것일까.  고등학교 졸업을 앞두고, 작게나마 용돈을 모으기 위해 새벽이면 항상 당신과 택배 상하차 일을 하곤 했다. 장마철의 영향 때문에 비가 퍼부어서 바지는 모두 젖은 상황에서도 트레일러에 있는 택배 상자를 모두 옮긴 어느 날이었다. 평소와 같이 약속된 택배 상자를 다 옮기고 집에 가는 길, 당신은 문득 입대를 해야겠다고 내게 말했다. 갑작스러운 당신의 선언에 왜 그런 결정을 했냐고 당신에게 물었다. 그러자 당신은 조금이라도 빨리 제대해서 돈을 벌고 싶다고 내게 말했다. 그렇게 당신은 첫 휴가를 나왔다. 고기를 먹고 싶다는 당신의 연락에 동네 작..
[Project] 프로젝트 삽질기59 (feat transactional outbox) 들어가며NestJS와 PostgreSQL, TypeORM을 활용하여 프로덕트를 만들고 있습니다. 저번 글에서 Transactional 데코레이터를 활용하면서 이벤트가 발행되지 않았다는 이유로 트랜잭션이 rollback 된다면 어떻게 대처해야 하는가에 대한 문제를 살펴봤습니다. 문제 해결을 위해서는 Transactional outbox 패턴을 적용해야 한다고 생각했습니다. 이번 글에서는 Transactional outbox 패턴이란 무엇이며, 패턴을 적용하면서 어떤 어려움이 있었는지 내용을 공유하고자 합니다.         문제점저번 글에서 작성한 문제를 다시 가져왔습니다. 만약 아래 로직처럼 데이터 저장 로직은 성공했지만 이벤트 발행에 실패할 경우, 트랜잭션은 어떻게 처리되어야 할까요? @Transact..
[Project] 프로젝트 삽질기58 (feat Transactional) 들어가며 NestJS와 PostgreSQL, TypeORM을 활용하여 프로덕트를 만들고 있습니다. 저번 글에서 커넥션 풀 누수 문제가 발생한 장애를 해결하는 과정을 공유했는데요. 장애를 해결한 후, 팀에서 커넥션 풀 누수 문제를 더 이상 겪지 않으려면 어떻게 해야 할까 고민했습니다. 이 글을 통해 팀 내에서 트랜잭션 제어 방식을 다르게 구성한 방법을 공유하고자 합니다. 문제 원인 TypeORM을 활용하면서 API를 구성할 때마다 매번 반복적으로 아래의 코드를 반복해서 작성했습니다. constructor(private readonly dataSource?: DataSource) {} const queryRunner = this.dataSource.createQueryRunner(); await queryR..
[일기장] 어른이 된다면 드라마 속 당신의 모습을 보면서 언젠가 어른이 된다면, 누군가의 뒷모습을 깊게 생각할 수 있는 사람이 되어야겠다고 생각했다. 예전에 했던 그 다짐을 지금도 가끔 떠올리곤 한다. 단 한 번도 만난 적 없는 사이지만 인생의 롤 모델이었던 당신이 그리울 때면 당신이 나왔던 작품들을 보곤 한다. 입시 스트레스를 받을 때, 드라마 '커피프린스 1호점', '파스타', '골든 타임'을 보면서 힘을 얻곤 했다. 입시 준비에 바빴지만 당신이 나온 드라마만큼은 놓칠 수 없었다. 그렇게 열심히 봤던 드라마 덕분에 대학교 입시에 합격한 에피소드가 기억난다. 한 대학의 입시 구술 면접에 이런 질문이 나온 적이 있다. 히포크라테스 선서의 문구가 나오며, 이런 문구가 뒤에 이어졌다. '당신은 응급실을 지키고 있는 의사이다. 당신 ..
[Project] 프로젝트 삽질기57 (feat 커넥션 풀 누수) 들어가며 AWS Aurora PostgreSQL를 활용해서 서비스를 운영하고 있습니다. 성능 테스트를 하면서 Writer DB의 Connections 수가 특정 숫자 이상이 되면 커넥션을 더 이상 맺을 수 없어서 장애가 발생한다는 것을 파악했습니다. 장애를 겪을 것을 대비하여 RDS의 connections 수를 트래킹 하며 커넥션 수가 특정 개수 이상이 넘으면, slack으로 알림을 받도록 구성했습니다. 얼마 전, max connections 수가 특정 수를 넘었다는 알림을 받았습니다. 알림을 받은 이후 시간이 지나도, 커넥션 수가 떨어지지 않는 문제가 생겼습니다. 그 과정에서 팀에서는 어떤 문제를 겪었고, 이 문제를 어떻게 해결했는지 공유하고자 글을 씁니다. RDS 커넥션 풀 누수 저희 팀에서는 Clo..
[일기장] 처음부터 잘하는 사람이 아니라 유튜브 알고리즘을 통해 티처스라는 프로그램을 우연히 봤다. 방송에서는 영어 점수가 11점인 학생이 69점으로 향상되는 과정을 보여줬다. 방송을 보면서 인생에서 처음으로 공부라는 것을 해야겠다고 생각했던 순간이 불현듯 떠올랐다. 고등학교에 입학하고 처음 반에 들어갔을 때 충격을 잊지 못한다. 중학생 때와는 다르게 반의 많은 친구들이 자신의 책을 꺼내서 공부하고 있었다. 이 친구들은 공부를 왜 할까? 생각했지만 친구들이 공부를 하건 말건, 나에겐 전혀 중요하지 않았다. 대학에 가고 싶은 마음이 전혀 없었기 때문에 수업은 잘 듣지 않았고, 쉬는 시간에 매점에 달려가서 빵을 사 먹거나 학교 끝나면 농구를 하거나 게임을 하면서 걱정 없이 살았다. 그렇게 시간이 흘러 중간고사를 봤고, 결과는 처참했다. 내 성적을 ..
[일기장] 시간이 지날수록 선명해지는 기억 어느 추운 겨울이었다. 막차를 타고 집에 가고 있는데 전화가 왔다. 친구였다. 낚시를 해서 회를 떠놨으니, 집으로 와서 회에 소주 한 잔 하자고 내게 말했다. 개인적으론 계획에 없는 행동은 잘하지 않기에, 다음 날 중요한 일정이 있다고 둘러대며 친구의 제안을 거절했다. 다시 연락이 왔다. 친구였다. 친구는 내가 맛있게 먹을 수 있도록 매운탕까지 끓여놨다고 했다. 더 이상 거절할 수 없었다. 잠시 발길을 친구의 집으로 돌렸다. 친구의 집에 도착했을 땐, 내가 모르는 다른 친구들이 자리에 있었다. 내 친구는 처음 보는 다른 친구들에게 나를 소개해줬다. '열심히 사는 친구이며, 내가 대학에 갈 수 있도록 도움을 준 고마운 소중한 친구'라고 나를 소개해줬다. 그러고 친구는 내게 소주 한 잔 따라주며 왜 이렇게 ..
[회고] 2023년 하반기 - 미련한 사람이 우물을 판다 들어가며 언제나 다정하게 가족 옆을 지킨, 환갑이 된 당신을 생각합니다. 당신은 돈을 벌기 위해 왕복 5시간 거리를 출퇴근했습니다. 하루 종일 서서 일하며 백화점 매대에서 소리 내어 이목을 끌어야 했고, 매대에 물품이 빠질 때면, 창고에서 물품을 꺼내와 채워 넣어야 했습니다.퇴근하고서는 밀린 집안일들을 해야 했고, 잠들기 전에는 파스를 이곳저곳 붙이며, 다음 날 아무 일 없다는 듯 새벽같이 출근했습니다. 출근 전 당신은 늘 빼놓지 않고, 혼자 있어도 라면 끓여 먹지 말고 밥 잘 챙겨 먹고 있으라고 밝게 웃으며 인사했습니다. 자식이 밥을 굶을까 걱정된 탓인지 당신은 언제나 식탁 위에 반찬들을 올려두고 출근했습니다. 음식이 놓인 식탁 위에는 시간이 갈수록, 반찬 대신 당신이 복용해야 할 약이 늘어만 갑니다..