어느날 아침에 출근하고 보니 앱이 계속 느려졌다는 문의가 들어오고 있었다. 이에 놀란 나는 헐레벌떡 에러로그 모니터링 시스템을 확인해봤고 낯선 에러 로그가 쌓여 있는 것을 확인할 수 있었다. 에러 로그에 있는 Trace 정보들을 통해 확인해보니 API 서버의 디비 커넥션 풀이 계속 끊기는 것을 확인할 수 있었고 좀 더 자세히 살펴보기위해 보기 위해 로드밸런서의 헬스체크를 확인해보니 한쪽 서버의 헬스 체크가 죽어 있었다... 피토하며 돌아가는 서버 헬스 체크가 죽어 있는 서버의 인스턴스는 위의 그림처럼 100%의 가까이 되는 CPU 사용률을 보이며 돌아가고 있었기에 빨리 연결을 끊고 원인을 파악해야 했다. 그래서 ssh 접속을 시도했지만 서버 과부하로 인해 내부에 접근할 수 없었고 그래서 어쩔 수 없이 인..
elasticsearch를 사용해야되는 상황이 생겨서 직접 실습하고 사용하기전에 elasticsearch에 대한 전체적인 구조에 대한 간단한 이해와 elasticsearch와 함께 사용되는 툴들이 어떤 것이 있고 어떤 용도로 활용되는지 이해하기 위해 글로 정리하려고 한다. 인덱스(index) VS 역인덱스(inverted index) Elastic Search는 Lucene의 역인덱스(역색인)을 활용하여 높은 검색 성능을 자랑하는데 대체 역색인이 어떤 구조를 가지고 있고 어떤 역활을 하기에 Elasticserach의 높은 검색 성능에 도움을 주는지 인덱스와 비교하여 알아보려고한다. 인덱스(Index) 인덱스부터 간단하게 설명하자면 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스의 테이블에서 특정 ..
스타트업을 선택한 이유 일단 스타트업을 다닌 이유는 SI에서 클라이언트 개발자에서 백엔드로 이직을 하면서 네카라쿠배라는 대기업에서 일하는 경험을 하고 싶었지만 지금 당장 현실적으로는 다른 지원자에 비해 경쟁력을 가진 경험도 없었고 높은 수준의 진입장벽도 존재하기 때문에 당장 준비하기보다는 차근차근 스탭을 거쳐서 올라가겠다는 생각과 드라마 실리콘벨리를 보고 내가 몸을 담고 있는 이 스타트업이 그런 기업이 될 수 있을 것이라는 꿈을 품고 스타트업에서의 여정을 시작하게 되었다. 스타트업의 현실 내가 생각했었던 스타트업의 개발자는 위그림처럼 적어도 3~5명의 엔지니에가 뭉쳐서 밤새 같이 고민하고 개발하는 미래를 생각하고 시작했지만 현실은 단 두명의 개발자분들이 백엔드와 Ios를 담당하여 개발을 진행하고 있었다...
AWS에서 VPC란? 서버를 구축하는데 있어서 중요한 것은 배포도 있지만 배포한 서비스를 외부 공격에 있어서 안전하게 설계하는 것도 중요하다. 그래서 핵심 시스템은 네트워크 망을 분리시켜서 외부에 노출되지 않도록 설계를 해야된다. AWS는 이러한 네트워크 망을 쉽게 분리시키고 관리할 수 있도록 인터페이스를 제공해준다. AWS VPC 생성 1. VPC 설정 이름 태그(선택): VPC의 이름을 지정합니다. IPv4 CIDR 블록: 우리가 흔하게 알고있는 192.168.0.1형태의 IP를 어떤 방법으로 선택할 지 고르는 항목 IPv4 CIDR 수동 입력: 10.0.0.0/24로 설정하게 되면 10.0.0.0 ~ 10.0.0.255까지 IP를 사용할 수 있다. IPAM 할당 IPv4 CIDR 블록: AWS에서 ..
도메인 주도 설계하기 도메인 주도 개발을 진행할 때 가장 먼저 진행해야되는 것은 도메인 모델과 바운디드 컨테스트를 정의하는 것이이다. 만약 개발 먼저 진행했을 때의 문제점을 아래와 같은 문제점이 발생할 수 있다. 아래와 같은 문제점을 발생하지 않기 위해서는 개발을 먼저 진행하기 전에 도메인 전문가와 함께 설계를 같이 진행해야 한다. 도메인 이해 부족: DDD는 모두가 같은 수준의 도메인 지식을 가지는 것을 추구하고 통일된 유비쿼터스 언어를 사용하여 소통하는 것을 지향한다. 개발을 먼저 시작하면 같이 일하는 팀원 모두가 도메인에 대한 충분한 이해가 부족할 수 있다. 유지보수성 감소: 팀원 모두가 각각 다른 도메인 모델을 개발하면서 서로 간의 간극이 커지고 코드의 유지보수성이 감소하게 된다. 이는 시간이 지..
ECR 이란? 아마존에서 설명하는 ECR Amazon Elastic Container Registry(Amazon ECR)는 안전하고 확장 가능하고 신뢰할 수 있는 AWS 관리형 컨테이너 이미지 레지스트리 서비스입니다. Amazon ECR은 AWS IAM을 사용하여 리소스 기반 권한을 가진 프라이빗 리포지토리를 지원합니다. 따라서 지정된 사용자 또는 Amazon EC2 인스턴스가 컨테이너 리포지토리 및 이미지에 액세스할 수 있습니다. 원하는 CLI를 사용하여 도커 이미지, Open Container Initiative(OCI) 이미지 및 OCI 호환 아티팩트를 푸시, 풀 및 관리할 수 있습니다. 한마디로 도커 허브와 같은 컨테이너의 이미지를 관리하는 레지스트리 서비스 이다. 거기에 추가적으로 IAM(AW..