저도 다음 사람만큼 마이크로서비스를 좋아하지만, 마이크로서비스를 처리하고 디버깅하는 데 큰 골칫거리라고 생각하나요? 예. 그러나 마이크로서비스 아키텍처는 개발자와 채용 담당자 사이에서 매우 인기 있는 주제이므로 생산 준비가 완료된 대규모 확장 가능한 프로젝트를 샌드박스에 넣지 않으면서 비용을 낮게 유지하거나 존재하지 않는 이유는 이봐, 우리 모두 파산했기 때문입니다.
축하합니다! 귀하는 IceToMeetYou Inc.에 컨설턴트로 고용되었으며 그들은 현재 배송 관리 소프트웨어를 보다 맞춤형 솔루션으로 업그레이드하려고 합니다. IceToMeetYou Inc.는 사막에 갇힌 한 남자에게 수입 얼음을 판매하는 제품에 대한 자금 조달로 약 30억 달러를 얻은 스타트업입니다. 현재 작업 관리 소프트웨어는 너무 작고 기능이 제한되어 들어오는 모든 배송물을 처리할 수 없습니다. Dennis라고 부르는 이 사람은 스무디를 차갑게 유지해야 합니다. 그들은 Dennis로부터 들어오는 여러 주문을 완료까지 처리하고, 얼음을 배달하는 일꾼 펭귄에게 명령을 할당하고, 해당 펭귄의 진행 상황을 추적하고, 상태 업데이트에 대한 실시간 알림을 받을 수 있는 작업 관리 시스템을 구축하려고 합니다. 이에 CEO는 이 프로젝트를 구축하는 데 도움이 될 수 있는 질문을 자유롭게 물어보라고 말했다. 우리는 프로젝트 빌드에 대해 생각하기 시작하면서 바로 그렇게 할 것입니다…
이 프로젝트에서는 다음 기술 스택을 사용합니다.
백엔드: REST API 및 마이크로서비스 구축을 위한 강력한 프레임워크로서 서비스 검색, 클라우드 배포, 이벤트 기반 시스템용 Kafka와 같은 다양한 도구를 제공하는 Java Spring Boot.
프런트엔드: 전역 상태 관리를 위한 NgRx를 사용한 강력한 프런트엔드 프레임워크 덕분에 Angular
데이터베이스: MySQL/PostgreSQL(관계형 데이터용), MongoDB(작업 데이터용)
실시간 업데이트: Kafka(이벤트 스트리밍용) 및 WebSocket
배포: 오케스트레이션을 위한 Docker 및 Kubernetes
테스트: JUnit, Jest 및 K6(로드 및 성능 테스트용)
여기서 주요 목적은 웹 애플리케이션을 생각할 때 움직일 수 있는 모든 부분을 보여주는 것입니다. 이 목록이 완전한 것은 아니지만 일반 영어로 많은 기반을 다루어 이 프로세스가 반복 가능하고 엔터프라이즈 애플리케이션에 대해 생각할 때 고민할 필요가 없도록 하는 것이 목표입니다. 각 섹션마다 심층적인 블로그, 코드 데모, 다이어그램, 사고 과정을 통해 V1 MVP를 통과하기 위한 설계부터 배포까지의 각 단계를 소개하고 가장 중요한 것은 항상 문제가 해결되고 있는지 확인하는 것입니다.
→ 설계 원칙: 서비스 독립성, 확장성, 내결함성 등 마이크로서비스 원칙 이해 및 구현
→ 서비스 격리: 관심 영역으로 분리하는 방법
→ 서비스 간 통신: 통신 전략(REST API, Kafka, WebSockets) 선택 및 서비스 간 데이터 일관성 처리
→ 서비스 개발: Spring Boot를 사용하여 개별 서비스를 구현하고, RESTful 엔드포인트를 처리하며, 문제를 적절하게 격리합니다.
→ 인증 및 보안: 안전한 사용자 인증 및 역할 기반 액세스 제어를 위해 JWT, OAuth 및 Spring Security를 사용합니다.
→ 데이터베이스 관리: 관계형(MySQL/PostgreSQL) 및 NoSQL(MongoDB) 데이터베이스 설정, 마이크로서비스용 데이터 스토리지 최적화 및 데이터 마이그레이션 처리
→ 사용자 인터페이스 디자인: Angular를 사용하여 원활한 사용자 경험 만들기
→ 상태 관리: 일관되고 반응적인 사용자 상호 작용을 위해 NgRx로 애플리케이션 상태를 처리합니다.
→ API 통합: RESTful API를 통해 Angular 프런트 엔드를 Spring Boot 백엔드 서비스에 연결하고 데이터 전송을 안전하게 관리합니다.
→ 웹소켓 및 이벤트 스트리밍: 즉각적인 업데이트를 위한 WebSocket과 서비스 간 안정적인 이벤트 스트리밍을 위한 Kafka를 구현합니다.
→ 푸시 알림: 사용자에게 실시간 업데이트를 전달하여 서비스 과부하 없이 효율적인 메시지 배포를 보장합니다.
→ 부하 테스트: K6를 사용하여 부하가 걸린 시스템을 평가하고, 병목 현상을 식별하고, 성능을 위해 마이크로서비스를 최적화합니다.
→ 로깅 및 모니터링: ELK 또는 대체 도구를 사용하여 로깅을 구현하고, 애플리케이션 상태를 추적하고, 심각한 오류에 대한 경고를 설정합니다.
→ Docker를 사용한 컨테이너화: 각 서비스에 대한 Docker 이미지를 구축하여 보다 쉬운 확장을 위해 일관된 런타임 환경을 구축합니다.
→ Kubernetes를 사용한 오케스트레이션: Kubernetes를 사용하여 배포, 자동 크기 조정, 로드 밸런싱, 복원력을 관리합니다.
→ 클라우드 호스팅: 클라우드 플랫폼(AWS, Azure, GCP)에서 비용 효율성, 보안, 안정성과 같은 측면을 다루는 호스팅 서비스입니다.
우선 샌드박스이므로 이 프로젝트는 학습 및 시연용으로 제작되었습니다. 여기서 중요한 점: 이것은 지하실에 앉아 있는 한 사람이 처음부터 다시 만든 100% 과잉 엔지니어링 솔루션입니다. 그렇게 심각한 것은 아닙니다.
이 프로젝트는 매일 업데이트하고 작업할 예정이니 자주 업데이트되길 기대해주세요!
이것은 팀 환경 내에서 개발이 어떤 것인지에 대한 연습이기도 합니다. 따라서 우리는 "스프린트" 내에서 작업하여 무엇이 제대로 되었는지, 무엇을 확인하기 위해 회고를 통해 목표를 달성할 것입니다. 문제가 발생했습니다. 어떤 차단 요인을 발견했으며 어떻게 해결할 수 있나요? 포스팅 5개 정도마다 빠른 복고를 하면서 업데이트 하겠습니다.
한 가지 더…저는 항상 피드백을 갈망합니다. 이해가 되지 않거나 명확하지 않은 내용이 있으면 댓글로 알려주시기 바랍니다.
그래서 시간이 늦어지고 있습니다. Sprint 1이 내일부터 시작됩니다. 모자를 단단히 쓰세요. 긴 하루가 될 것입니다…
위 내용은 Java Spring Boot 및 Angular를 사용하여 확장 가능한 마이크로서비스 애플리케이션 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!