Backend

· Backend
아키텍처 고민하기 마이로서비스는 아키텍처의 한 종류이며, MVC, MVP 또한 아키텍처다. 차이점이라 하면 시스템 수준의 아키텍처와 클래스 수준의 아키텍처의 차이다. 어디까지가 아키텍처고 어디까지가 상세 설계에 속하는지 명확하게 구분하기는 어려우나, 아키텍처는 설계 과정에서 나오는 결과물이라는 것이다. 아키텍처를 결정하는 요인 특정 아키텍처가 유행한다고 선택하면 안된다. 기능 요구 사항과 품질속성/비기능 요구사항을 고려해야 한다! ✏️ 기능 요구사항 기능 요구사항이란 소프트웨어로 해결하고자 하는 문제와 관련이 있다. 기능 요구사항은 아키텍처에게 영향을 준다. ✏️ 품질속성/비기능 요구사항 품질 속성의 예로는 성능과 확장성이 있다. 어떤 품질 속성은 업무 도메인에서 도출된다. (법률 조건) 품질속성은 대부..
자바에서는 로깅을 slf4j를 사용한다. Logger를 쓰는 이유 로깅을 쓰는 이유는 간단하다. 당장 아래 예시의 결과만 봐도 Logger를 활용한다면 알 수 있는 것이 훨씬 많다. @RequestMapping("/log-test") public String logTest() { String name = "Spring"; System.out.println("name = " + name); log.info("info log={}", name); return "ok"; } 또한 application.properties를 통해서 Debug 레벨을 선택할 수 있다. 이것이 로깅의 또다른 장점이기도 하다! trace, debug, info(로컬에서는 trace, 개발에서는 debug, 운영에서는 info를 주로 ..
· Backend
요구사항 이번 게시물의 배경이 되는 Context를 설명하도록 하겠다. Kinesis로 모바일 유저들에 위치/속도 등 여러가지 데이터가 실시간으로 1명당 10초에 1번 꼴로 수집되는 상황이다. 약 10000명 이상의 유저가 있으며 스트림 데이터로서 관리하여야 한다. Kinesis + Lambda를 통해서 비동기적으로 데이터가 들어올 때마다 API Gateway를 거쳐서 websocket으로 전송되던 구조에서, Spring 백엔드 서버로 Kinesis에 수집되는 데이터를 비동기적으로 수집하고 이를 또다시 비동기적으로 구독한 Client에게 실시간으로 데이터를 전송하여야 하는 상황이다. 도입 이번 게시물은 Kotlin언어 + Spring 프레임워크에서 Amazon Kinesis에서 코틀린의 코루틴과 EFO(..
Kinesis란 실시간으로 데이터 스트림(data stream)을 수집,처리,분석해주는 서비스 📎스트리밍 데이터 데이터 스트림을 수집할 수 있고 저장할 수 있다. 데이터를 실시간 처리해 S3와 같은 스토리지에 저장해서 다양한 일괄 처리를 수행한다. Kinesis data stream은 set of shards다! 샤드의 수를 조절하여 스트림을 얼마나 받을지 조절할 수 있다. (DynamoDB) 리샤딩(Resharding) 모든 data record에는 sequence가 존재한다. Capacity Mode on-demand mode: 자동으로 샤드의 개수를 관리한다. provisioned mode: 필요햔 샤드의 개수를 사용자가 명시해야한다. Kinesis & Lambda Lambda Kinesis와 La..
Amazon Simple Queue Service(Amazon SQS)는 내구력 있고 가용성이 뛰어난 보안 호스팅 대기열을 제공하며 이를 통해 분산 소프트웨어 시스템과 구성 요소를 통합 및 분리할 수 있습니다. Amazon SQS는 배달 못한 편지 대기열 및 비용 할당 태그와 같은 공용 구성을 제공합니다. 또한 AWS SDK가 지원하는 모든 프로그래밍 언어로 액세스할 수 있는 일반 웹 서비스 API를 제공합니다. 보안 - Amazon SQS 대기열에 메시지를 보내고 받을 수 있는 사람을 제어합니다. 기본 Amazon SQS 관리형 서버 측 암호화(SSE)를 사용하거나 AWS Key Management Service(AWS KMS)에서 관리되는 사용자 지정 SSE 키를 사용하여 대기열에 있는 메시지의 콘텐..
Kinesis에서 Lambda를 함께 사용하는 이유 자동화된 데이터 처리: Kinesis에서 수집하는 대량의 실시간 데이터 스트림을 Lambda 함수를 통해 자동으로 처리할 수 있다. 이를 통해 복잡한 서버 관리나 데이터 처리 파이프라인 구축 없이도 데이터를 실시간으로 분석하고 반응할 수 있다. 유연성과 확장성: Lambda는 요청 수에 따라 자동으로 확장되므로, 데이터 스트림의 크기나 처리 요구가 변동되더라도 문제 없이 대응할 수 있다. 이는 데이터 볼륨이 예측 불가능하거나 급변하는 애플리케이션에 특히 유용하다. 비용 효율성: Lambda는 실행 시간에만 비용을 지불하는 모델을 따르므로, 사용하지 않는 시간에는 비용이 발생하지 않는다. 이는 대량의 데이터를 처리해야 하는 작업에서 경제적으로 매우 유리하..
지미닝
'Backend' 카테고리의 글 목록 (2 Page)