본문 바로가기

INFRA

(3)
[INFRA/DB] 롤백을 고려해 하위호환성을 갖춘 스키마 설계하기 📑 Table of Contents📝 롤백을 고려하게 된 이유🤔 스키마는 어떻게 롤백할 수 있지?🙋 첫 시도, 롤백용 스크립트를 작성하기🔍 스키마 롤백, 꼭 필요한가? ✅ flyway 를 사용함으로서 하게 된 오해 ✅ SRE 원칙을 통한 깨달음🚀 Expand and Contract 전략 ✅ 예시로 이해해보기 ✅ DDL 별 원칙🚀 Flyway 설정 일부 변경🚀 시드 데이터가 필요한 경우, R prefix 사용하기📝 롤백을 고려하게 된 이유지난 1개월하고도 몇주간의 프로젝트를 진행하는 상황에서, 우리는 잦은 요구사항의 변화를 겪게 됐다. 이에 따라 코드는 빠르게 변경이 이뤄졌고, 버그 픽스도 심심찮게 필요했다. 그러나 QA 를 하거나, 데모데이를 해야 하는 ..
[INFRA] 보안을 고려해 서버 아키텍처를 설계해 보자 📝 들어가며우리는 기존에 dev 서버만 존재했고, prod 서버는 존재하지 않았다.prod 서버를 구축하는 과정에서 보안을 고려해 설계한다면, 어떤 설계를 할 수 있을지에 대한 고민을 시작했다. 그 과정에 대해 기록해보고자 한다.1️⃣ 인바운드 규칙우리가 가장 먼저 고려한 것은 인바운드 규칙이었다. 현재 AWS 의 ec2 를 이용해 서버를 구축한 dev 서버에서의 인바운드 규칙은 모두에게 열려 있었다. 22번 포트는 우테코 규약에 따라 특정 IP (우테코 캠퍼스 내부) 만 접속할 수 있었으나, 나머지 포트들은 모든 IP 가 접근할 수 있었다.클라이언트가 직접 사용하는 IP가 결국 dev 서버의 IP 였기 때문에, 악의적인 사용자가 해당 IP로 대량의 요청을 보내면 서비스가 쉽게 다운될 수 있는 구조였다..
[INFRA/DB] Flyway를 고르기까지 - DB 의 마이그레이션도 에자일해야 해 🤔 왜 DB 스키마 마이그레이션 도구의 도입을 고민하게 되었는가에자일 한 방식으로 1차 데모데이 / 2차 데모데이를 거치면서 개발에 임하고 있는 현재, 계속해서 엔티티의 구성이 달라지는 것은 당연하다. 우리 팀의 경우에도 기획에 2-3번은 엎어지고, 일부가 조금씩 수정되기도 했다. 뿐만 아니라 팀원 간의 이해가 조금씩 어긋나서 엔티티의 구조가 달라지는 경우도 허다했다. 그렇기에 DB 스키마 마이그레이션 도구가 필요할 것이라는 예상은 하고 있었다. 그러나 생각보다 빨리 필요성을 느끼게 되었다. 배포 환경에서 500 에러가 터졌기 때문이다. 왜 문제 상황이 발생했을까?기존에 amount 라는 필드가 존재했다. 그러나 이의 명확성을 위해 cupAmount 라는 필드명으로 변경했다.그러나 운영 환경의 ddl-..