You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 8c9a6ef
Browse filesBrowse the repository at this point in the historyBrowse files
@@ -829,46 +829,46 @@ Below are five caching strategies that are frequently utilized.
829
829
</p>
830
830
831
831
832
-
The diagram below shows a typical microservice architecture.
832
+
아래 다이어그램은 일반적인 마이크로서비스 아키텍처를 보여줍니다.
833
833
834
-
- Load Balancer: This distributes incoming traffic across multiple backend services.
835
-
- CDN (Content Delivery Network): CDN is a group of geographically distributed servers that hold static content for faster delivery. The clients look for content in CDN first, then progress to backend services.
836
-
- API Gateway: This handles incoming requests and routes them to the relevant services. It talks to the identity provider and service discovery.
837
-
- Identity Provider: This handles authentication and authorization for users.
838
-
- Service Registry & Discovery: Microservice registration and discovery happen in this component, and the API gateway looks for relevant services in this component to talk to.
839
-
- Management: This component is responsible for monitoring the services.
840
-
- Microservices: Microservices are designed and deployed in different domains. Each domain has its own database. The API gateway talks to the microservices via REST API or other protocols, and the microservices within the same domain talk to each other using RPC(Remote Procedure Call).
834
+
- Load Balancer: 이렇게 하면 들어오는 트래픽이 여러 백엔드 서비스에 분산됩니다.
835
+
- CDN (Content Delivery Network): CDN은 더 빠른 전송을 위해 정적 콘텐츠를 보관하는 지리적으로 분산된 서버 그룹입니다. 클라이언트는 먼저 CDN에서 콘텐츠를 찾은 다음 백엔드 서비스로 이동합니다.
836
+
- API Gateway: 수신 요청을 처리하고 관련 서비스로 라우팅합니다. ID 공급자와 통신하고 서비스를 검색합니다.
837
+
- Identity Provider: 유저에 대한 인증과 인가를 처리합니다.
838
+
- Service Registry & Discovery: 이 컴포넌트에서 마이크로서비스 등록 및 검색이 이루어지고, API 게이트웨이는 이 컴포넌트에서 대화할 관련 서비스를 찾습니다.
839
+
- Management: 이 컴포넌트는 서비스 모니터링을 담당합니다.
840
+
- Microservices: 마이크로서비스는 서로 다른 도메인에서 설계 및 배포됩니다. 각 도메인에는 자체 데이터베이스가 있습니다. API 게이트웨이는 REST API 또는 기타 프로토콜을 통해 마이크로서비스와 통신하고, 동일한 도메인 내의 마이크로서비스는 RPC(Remote Procedure Call)를 사용하여 서로 통신합니다.
841
841
842
-
Benefits of microservices:
842
+
마이크로서비스의 이점
843
843
844
-
-They can be quickly designed, deployed, and horizontally scaled.
845
-
-Each domain can be independently maintained by a dedicated team.
846
-
-Business requirements can be customized in each domain and better supported, as a result.
844
+
-빠르게 설계, 배포하고 수평적으로 확장할 수 있습니다.
845
+
-각 도메인은 전담 팀에서 독립적으로 관리할 수 있습니다.
846
+
-결과적으로 각 도메인에서 비즈니스 요구 사항을 커스터마이즈하고 더 나은 지원을 제공할 수 있습니다.
847
847
848
848
### 마이크로서비스 모범사례
849
849
850
-
A picture is worth a thousand words: 9 best practices for developing microservices.
When we develop microservices, we need to follow the following best practices:
858
-
859
-
1.Use separate data storage for each microservice
860
-
2.Keep code at a similar level of maturity
861
-
3.Separate build for each microservice
862
-
4.Assign each microservice with a single responsibility
863
-
5.Deploy into containers
864
-
6.Design stateless services
865
-
7.Adopt domain-driven design
866
-
8.Design micro frontend
867
-
9.Orchestrating microservices
857
+
마이크로서비스를 개발할 때는 다음과 같은 모범 사례를 따라야 합니다.
858
+
859
+
1.각 마이크로서비스마다 별도의 데이터 스토리지 사용
860
+
2.코드의 완성도를 비슷한 수준으로 유지
861
+
3.각 마이크로서비스마다 별도로 빌드
862
+
4.각 마이크로서비스에 단일 책임 할당
863
+
5.컨테이너에 배포
864
+
6.스테이트리스 서비스 설계
865
+
7.도메인 드리븐 설계 도입
866
+
8.마이크로 프론트엔드 설계
867
+
9.마이크로서비스 오케스트레이션
868
868
869
869
### 마이크로서비스에 일반적으로 사용하는 기술 스택은 무엇인가요
870
870
871
-
Below you will find a diagram showing the microservice tech stack, both for the development phase and for production.
871
+
아래에서 개발 단계와 프로덕션 단계의 마이크로서비스 기술 스택을 보여주는 다이어그램을 확인할 수 있습니다.
872
872
873
873
<p>
874
874
<imgsrc="../images/microservice-tech.jpeg" />
@@ -877,54 +877,54 @@ Below you will find a diagram showing the microservice tech stack, both for the
877
877
878
878
▶️ 𝐏𝐫𝐞-𝐏𝐫𝐨𝐝𝐮𝐜𝐭𝐢𝐨𝐧
879
879
880
-
- Define API - This establishes a contract between frontend and backend. We can use Postman or OpenAPI for this.
881
-
- Development - Node.js or react is popular for frontend development, and java/python/go for backend development. Also, we need to change the configurations in the API gateway according to API definitions.
882
-
- Continuous Integration - JUnit and Jenkins for automated testing. The code is packaged into a Docker image and deployed as microservices.
880
+
- Define API - 이렇게 하면 프론트엔드와 백엔드 간에 계약이 성립됩니다. 이를 위해 Postman, OpenAPI를 사용할 수 있습니다.
881
+
- Development - 프론트엔드 개발에는 Node.js나 react가, 백엔드 개발에는 자바/파이썬/go가 많이 사용됩니다. 또한 API 정의에 따라 API 게이트웨이의 구성을 변경해야 합니다.
882
+
- Continuous Integration - 자동화된 테스트를 위해 JUnit과 Jenkins를 사용합니다. 코드는 Docker 이미지로 패키징되어 마이크로서비스로 배포됩니다.
883
883
884
884
▶️ 𝐏𝐫𝐨𝐝𝐮𝐜𝐭𝐢𝐨𝐧
885
885
886
-
-NGinx is a common choice for load balancers. Cloudflare provides CDN(Content Delivery Network).
887
-
- API Gateway - We can use spring boot for the gateway, and use Eureka/Zookeeper for service discovery.
888
-
-The microservices are deployed on clouds. We have options among AWS, Microsoft Azure, or Google GCP.
889
-
Cache and Full-text Search - Redis is a common choice for caching key-value pairs. Elasticsearch is used for full-text search.
890
-
- Communications - For services to talk to each other, we can use messaging infra Kafka or RPC.
891
-
- Persistence - We can use MySQL or PostgreSQL for a relational database, and Amazon S3 for object store. We can also use Cassandra for the wide-column store if necessary.
892
-
- Management & Monitoring - To manage so many microservices, the common Ops tools include Prometheus, Elastic Stack, and Kubernetes.
886
+
-로드 밸런서에는 NGinx가 일반적으로 선택됩니다. Cloudflare는 CDN(Content Delivery Network)을 제공합니다.
887
+
- API Gateway - 게이트웨이에는 스프링 부트를 사용하고, 서비스 검색에는 Eureka/Zookeeper를 사용할 수 있습니다.
888
+
-마이크로서비스는 클라우드에 배포됩니다. AWS, Microsoft Azure, Google GCP 중에서 선택할 수 있습니다.
889
+
Cache and Full-text Search - Redis는 key-value 쌍을 캐싱하기 위한 일반적인 선택입니다. 풀 텍스트 서치에는 Elasticsearch가 사용됩니다.
890
+
- Communications - 서비스가 서로 통신하기 위해서는 메시징 인프라로 Kafka 혹은 RPC를 사용할 수 있습니다.
891
+
- Persistence - 관계형 데이터베이스에는 MySQL 또는 PostgreSQL을 사용할 수 있으며, 객체 저장소에는 Amazon S3을 사용할 수 있습니다. 필요한 경우 wide-column 저장소로 Cassandra를 사용할 수도 있습니다.
892
+
- Management & Monitoring - 수많은 마이크로서비스를 관리하기 위한 일반적인 운영 도구로 Prometheus, Elastic Stack, Kubernetes가 있습니다.
893
893
894
894
### 카프카가 빠른 이유
895
895
896
-
There are many design decisions that contributed to Kafka’s performance. In this post, we’ll focus on two. We think these two carried the most weight.
896
+
카프카의 성능에 기여한 많은 디자인 결정이 있습니다. 이 글에서는 두 가지에 초점을 맞추겠습니다. 이 두 가지가 가장 큰 비중을 차지했다고 생각합니다.
897
897
898
898
<p>
899
899
<imgsrc="../images/why_is_kafka_fast.jpeg" />
900
900
</p>
901
901
902
-
1.The first one is Kafka’s reliance on Sequential I/O.
903
-
2.The second design choice that gives Kafka its performance advantage is its focus on efficiency: zero copy principle.
902
+
1.첫 번째는 카프카가 순차적 I/O에 의존한다는 점입니다.
903
+
2.카프카의 성능 이점을 제공하는 두 번째 설계 선택은 효율성에 초점을 맞춘 제로 카피 원칙입니다.
904
904
905
-
The diagram illustrates how the data is transmitted between producer and consumer, and what zero-copy means.
905
+
이 다이어그램은 프로듀서와 컨슈머 간에 데이터가 전송되는 방식과 제로 카피의 의미를 설명합니다.
906
906
907
-
-Step 1.1 - 1.3: Producer writes data to the disk
908
-
-Step 2: Consumer reads data without zero-copy
907
+
- 1.1 - 1.3단계: 프로듀서가 디스크에 데이터 쓰기
908
+
-2단계: 컨슈머가 제로 카피 없이 데이터 읽기
909
909
910
-
2.1 The data is loaded from disk to OS cache
910
+
2.1 데이터가 디스크에서 OS 캐시로 로드됩니다.
911
911
912
-
2.2 The data is copied from OS cache to Kafka application
912
+
2.2 데이터가 OS 캐시에서 카프카 애플리케이션으로 복사됩니다.
913
913
914
-
2.3 Kafka application copies the data into the socket buffer
914
+
2.3 카프카 애플리케이션이 데이터를 소켓 버퍼에 복사합니다.
915
915
916
-
2.4 The data is copied from socket buffer to network card
916
+
2.4 데이터가 소켓 버퍼에서 네트워크 카드로 복사됩니다.
917
917
918
-
2.5 The network card sends data out to the consumer
918
+
2.5 네트워크 카드가 컨슈머에게 데이터를 전송합니다.
919
919
920
920
921
-
-Step 3: Consumer reads data with zero-copy
921
+
-3단계: 컨슈머는 제로 카피로 데이터를 읽습니다.
922
922
923
-
3.1: The data is loaded from disk to OS cache
924
-
3.2 OS cache directly copies the data to the network card via sendfile() command
925
-
3.3 The network card sends data out to the consumer
923
+
3.1: 데이터가 디스크에서 OS 캐시로 로드됩니다.
924
+
3.2 OS 캐시는 sendfile() 커맨드를 통해 데이터를 네트워크 카드에 직접 복사합니다.
925
+
3.3 네트워크 카드가 컨슈머에게 데이터를 전송합니다.
926
926
927
-
Zero copy is a shortcut to save the multiple data copies between application context and kernel context.
927
+
제로 카피는 애플리케이션 컨텍스트와 커널 컨텍스트 사이에 여러 데이터 복사본을 저장하는 숏컷입니다.
0 commit comments