전체 글

개발에 관련된 학습 내용들을 기록하는 공간입니다.
Database

[MySQL] 가용성과 확장성을 위한 Database Replication

DB Replication이 왜 필요할까? 다음과 같이 데이터베이스를 한 대만 운영하는 아키텍처가 있다고 가정해보자. 모든 데이터에 대한 읽기와 쓰기 작업은 하나의 MySQL 데이터베이스에서 수행된다. 만약, 갑자기 서비스 홍보가 너무 잘 되어서 트래픽이 폭주했다고 가정해보자. (본 포스팅에서는 주제와 벗어나는 서버 부하는 신경쓰지 않는다.) DB 관점에서 보면 다음과 같이 크게 2가지 문제가 발생할 수 있다. [1. SPOF] 데이터베이스를 한 대만 운영하는 환경에서는 데이터베이스가 다운될 경우 전체 시스템 장애로 이어질 수 밖에 없다. 백업으로 사용할 데이터베이스도 없고 HA 구성도 되어있지 않으니 당연하다. 이처럼 하나의 요소에 생긴 장애가 시스템 전체 장애로 이어지는 것을 SPOF (Single ..

생각 정리

2023 회고 [SW 마에스트로 14기 수료]

짧게만 느껴졌던 2023년이 지나고 어느덧 2024년 새해가 밝았네요. 23년은 저에게 유독 의미가 큰 한 해였던 것 같습니다. SW 마에스트로라는 연수 과정에 참여하여 많은 사람들을 만나고, 보고, 배우면서 여러 인사이트를 얻을 수 있었고 이를 통해 참 많이 성장했다고 생각합니다. 이번 포스팅에서는 소마 과정들을 짧게 회고하면서 저의 생각들에 대해 이야기해보려 합니다. SW 마에스트로 선발 [2 - 3월] SW 마에스트로는 과학정보통신기술부가 주최하고 한국정보산업연합회가 주관하는 SW 정부지원 사업입니다. 국가에서 지원하는 사업이니만큼 지원자체가 엄청난데요, 매달 100만 원의 지원금과 최대 200만 원의 IT 기기 지원금, 최대 약 100만 원가량의 책과 강의를 구매할 수 있는 자기계발 지원금을 제공..

Test

nGrinder를 활용한 API 서버 부하 테스트

📌 개요 개발을 하다 보면 단순히 어떤 기능을 구현하는 것에만 집중할 때가 있다. 필자도 이전까지는 주어진 요구사항에 맞춰 기능을 구현하는 것에만 집중했었다. 하지만 서비스를 운영하다 보니 기능을 제공하는 것만큼이나 중요한 것이 제품 퀄리티라고 느껴졌다. 내가 개발한 기능이 요구사항대로 정확하게 동작하는지, 응답시간이 너무 길어서 사용자가 불편해하진 않는지 등등 실제 사용자 입장에서 생각해보며 지속적으로 개선해 나가는 과정이 필요하다고 생각하게 되었다. 이와 같은 부분들을 검증할 수 있는 도구가 '테스트'이고 이것이 테스트가 중요한 이유이다. 요구사항을 충족하는지에 대한 부분은 단위, 통합, 인수 테스트 등을 통해 검증할 수 있다. 테스트는 요구사항을 작성한 하나의 '문서'라고 불리는 만큼 다양한 상황에..

AWS

AWS Solutions Architect - Associate (SAA-C03) 자격증 취득 후기

취득 동기 올해 1월쯤, 사이드 프로젝트에 참여한 적이 있다. 꽤 큰 규모로 이루어지는 프로젝트였는데 디자이너와 기획, 개발자를 포함해서 거의 10명 정도의 인원이 있었다. 해당 프로젝트에서 PM 역할을 맡고 계셨던 분이 개발 업무를 각각 분담해 주셨는데 어쩌다 보니 내가 AWS 인프라 구축을 담당하게 되었다. 그런데.... 당시 내가 AWS에 대해 알고있는거라곤 EC2라는 리소스가 있고 이걸로 서버를 호스팅 할 수 있다 는 것 정도? AWS에 대해 걸음마도 제대로 못 뗀 수준이었기 때문에 빠르게 학습해서 팀에 기여해야겠다고 생각했다. 마음을 먹고 나서 바로 인프런에서 강의를 구매하여 AWS에 대해 학습하기 시작했다. AWS 클라우드 서비스 인프라 구축 이해와 해킹, 보안 - 인프런 | 강의 IT 서비스..

Test

M2 MAC OS 업데이트 이후 발생한 Embedded Redis 실행 오류

문제 상황 평소처럼 로컬에서 테스트를 돌리는데 갑자기 수많은 테스트가 깨졌다. Embedded Redis 관련된 문제였는데, 예외 메시지가 단순히 Can't start redis server. Check logs for details 여서 처음엔 뭐가 문제인지 가늠할 수 없었다. (자세한 내용은 로그를 확인하라는데 로그를 제대로 찍어줘야 보죠..) 그래서 embedded redis 코드를 까보기 시작했는데 버전이 업데이트 되면서 MAC_OS_X 도 지원하는 모습을 확인할 수 있었다. 나는 M2 환경에서 테스트를 수행한 것이기 때문에 크게 문제가 되지 않을 것이라고 생각했다. 그래서 embedded redis 코드에 대해 열심히 디버깅 해본결과.. 다음과 같이 arch에 x86_64가 바인딩되는 모습을 확..

Test

Embedded Redis로 외부 환경에서 Redis Test 하기

개요 프로젝트를 진행하면서 다양한 테스트 코드를 작성하고 있다. 우리 팀은 각종 인증번호, Refresh Token 저장용도로 Redis 를 사용하고 있었다. Redis를 사용하는 API에 대한 테스트를 작성하고 PR을 올렸는데 CI 에서 테스트가 실패하는 문제가 발생했다. 에러 로그를 통해 Redis를 사용하는 테스트가 모두 실패했다는 것을 확인할 수 있었다. 테스트 실패 원인에 대해 생각해보니 Actions에서 연결할 Redis 노드가 없다는 것을 알아차리게 되었다. 문제 상황 다음은 프로젝트의 환경별 데이터베이스 의존성에 대해 나타낸 것이다. 프로젝트에서 사용하고 있는 데이터베이스는 Redis와 RDBMS 이다. 로컬 환경에서는 In-Memory DB 인 H2와 Docker로 Redis 컨테이너를 ..

KAispread
기억의 정류장