본문 바로가기

창업일기4

결국 Terraform으로 정착 AWS CDK를 사용하다가 CDK 의존성(CloudFormation의 스택 등)에 곤혹스러운 일이 많이 발생했다.예를 들면, 분명 스택 삭제를 진행했는데도 제거한 보이지 않는 람다가 존재한다고 안되는 일이 있다거나... 그래서 TypeScript로 IaC가 가능한 Pulumi를 사용하려고 했지만 이건 그냥 자료가 없다. 🥹 예제가 매우 부족한 Pulumi의 공식문서는 아쉽다. 결론은 Terraform으로 하기로 했다. CDK와 다르게 람다를 zip 하는 스크립트를 추가 작성해야하지만, 한 번만 해두면 매우 빠르게 빌드가 가능. 2024. 3. 18.
Pulumi 도입한 회사들은 어떻게 스터디를 했을까 Pulumi 공식문서는 도저히 못알아보겠다. StackOverFlow에도 자료가 없고, 그냥 없다. fargate 작성하려는데 이게 예제의 전부다.  ...언어가 같다는 가정 하에 cdk 하고 인터페이스가 매우 흡사한데 그냥 뭔가 안된다 얘는       어떻게 하신 겁니까 형님들! 2024. 3. 14.
실시간 알림 서버에서 부하와 비용 최소화하기 1. 알림서버는 Webflux로 구축하고, 오직 데이터 스트림을 내려주는 역할만 한다.2. 부하를 줄이기 위해 소켓 통신이 아닌 HTTP의 기본 스펙인 가벼운 리얼타임 스트리밍이 가능한 SSE를 이용한다.  - 구현이 매우 쉽다는 장점도 있다.3. 단방향 통신이라는 SSE의 단점을 극복하기 위해 데이터 생성, 상태 업데이트에 대한 것은 람다(무료니까!)로 처리한다.  - 클라에서 직접적으로 람다를 트리거 하는게 일단 가능한지 여부는 궁금하긴한데, 현재 프론트는 Next로 구현되고 있기 때문에 그것이 가능하든 말든 문제 없다. Next의 백엔드단에서 쏘면 된다.4. 하나의 call 마다 Lambda를 사용하지 않기 위해 SQS를 buffer로써 이용한다. 즉, 여러 요청들을 모아서 람다를 배치(요청 묶음).. 2024. 1. 10.
[Spring] 멀티 모듈 버릴게요 MSA를 하기에는 시간이 없고, Facade 레이어를 적용해보면서 아예 레이어간 의존성을 최대한 독립적으로 구성하기 위해 멀티 모듈을 도입했다. 각 레이어의 이름은 마음대로 지었다. 컨셉은 하위의 모듈들은 상위 모듈을 참조할 수 없다는 것이다. 그리고 Common 레이어는 다른 레이어를 참조할 수 없다. Gateway: 흔히 Controller 혹은 Presentation 이라고 불리는 레이어이다. 인증을 담당하기도 한다. Service: Facade레이어이다. 핵심 비즈니스 로직이 들어가는 레이어이다. Domain: Domain의 유효성이나 제한 조건들을 검증하는 레이어이다. 도메인 자체의 예외처리는 여기 행해지고, Service(Facade)레이어에서는 예외처리는 최소화하고, 비즈니스 로직에만 집중할.. 2024. 1. 3.