Professional Cloud Architect Exam QuestionsBrowse all questions from this exam

Professional Cloud Architect Exam - Question 135


You are developing your microservices application on Google Kubernetes Engine. During testing, you want to validate the behavior of your application in case a specific microservice should suddenly crash. What should you do?

Show Answer
Correct Answer: B

To validate the behavior of your application when a specific microservice crashes, utilizing Istio's fault injection capabilities is the most appropriate approach. Istio allows for precise control to simulate various failure scenarios at the microservice level without causing broader disruption in the cluster. By using fault injection, you can introduce errors such as abrupt crashes or delays specifically to the microservice in question, thereby accurately observing the application's response under controlled and targeted fault conditions. This method ensures that other components in the system are not unintentionally affected, maintaining a more isolated and relevant testing environment for the microservice's failure behavior.

Discussion

17 comments
Sign in to comment
TotoroChinaOption: B
Jul 1, 2021

Answer is B. application crash, not node.

XDevX
Jul 2, 2021

I see it the same way - it is b)

XDevXOption: B
Jul 1, 2021

I think that c) is not the correct answer. I am not a GKE or Kubernetes expert, so maybe I am wrong. My understanding is, that in Kubernetes a microservice can run on pods on different nodes and one node can contain pods running differend microservices - so to kill one node will not kill a microservice but several pods running on that node. Please correct me if I am wrong.

ale_brd_Option: B
Dec 3, 2022

Istio is replicated and replaced by Anthos service mesh, please update the answer.

roaming_pandaOption: B
Jan 5, 2023

Istio fault injection :https://istiobyexample.dev/fault-injection/

rakpOption: B
Sep 19, 2023

B seems correct. Istio's fault injection is right way to introduce fault.

someone2011Option: B
Sep 27, 2023

https://istiobyexample.dev/fault-injection/ In a Kubernetes environment, you can approach chaos testing at different layers - for instance, by deleting pods at random, or shutting off entire nodes. But failures also happen at the application layer. Infinite loops, broken client libraries - application code can fail in an infinite number of ways! This is where Istio fault injection comes in. You can use Istio VirtualServices to do chaos testing at the application layer, by injecting timeouts or HTTP errors into your services, without actually updating your app code. Let’s see how. So both C and B work.

someone2011
Sep 27, 2023

Probably C is the best to simulate the entire microservice crashing.

hzaouiOption: B
Jan 24, 2024

Fault injection is a technique used in chaos engineering to deliberately introduce errors into a system to test its resilience and observe its behavior under failure conditions. Istio is a service mesh that can manage the traffic between microservices. It includes fault injection capabilities that enable you to simulate failures such as delays or crashed services without actually stopping the service or damaging the environment. This allows you to validate how the rest of your application reacts to the failure of a specific microservice.

Mahmoud_EOption: B
Oct 19, 2022

destroying a node is not really testing microservices failure

meguminOption: B
Nov 16, 2022

B is ok

surajkrishnamurthyOption: B
Dec 14, 2022

B is the correct answer

BeCalmOption: B
Mar 3, 2023

Isn’t Istio used in the context of Anthos vs. GKE?

BiddlyBdoyngOption: C
Jun 10, 2023

I think perhaps C is correct due to the very specific test scenario. Chaos testing would be great for generally resilience test but it wants to test the behaviour of the app when the microservice crashed. Shutting down the microservice seems the simplest way to test this scenario.

JoeJoe
Nov 24, 2023

I agree, mostly because we are in a testing environment, so a node crash is not a great disaster even if there are other microservices running in thst node's pods.

MiguelMiguelOption: B
Oct 29, 2023

B is the correct option, if you deleted a node you will deleted more than the microservices that you wanted to eliminated.

JoeJoeOption: C
Nov 24, 2023

IMHO the right answer is C. This link clearly explains why (remember that we are in a testing environment, so what's the problem in generating a cras of an entire node of the cluster?): https://www.linkedin.com/pulse/google-cloud-architect-case-study-5-biswa-prakash-nayak/

Gino17m
Apr 25, 2024

The problem is that according to the question: "During testing, you want to validate the behavior of your application in case a specific micsoservice should suddenly crash"....Even on testing environment specific microservice can run on more then one node and not on the one you destroyed.....moreover you should not affect other parts o the application (other microservices running on the destroyed node)

spuyolOption: B
Jan 3, 2024

Selected Answer: B Kill one randomly selected k8s cluster node doesn't guarantee you kill pods of the microservice. The node could or colud not have microservices of that app running on it.

ammonia_freeOption: B
Jan 15, 2024

Testing Objective: The choice between options B and C depends on the testing objectives. If the goal is to understand the behavior of the system when a specific microservice fails (this is how the question is formulated), then a targeted approach (Option B) is more appropriate. If the goal is to understand the broader resiliency of the system to node failures, then Option C would be more relevant. Microservice Focus: Given the question's focus on a specific microservice, Istio's fault injection (Option B) provides a more direct and controlled way to simulate the failure of that microservice and observe the system's response, aligning better with the scenario described.

de1001cOption: B
Jun 7, 2024

Between B and C. C is the wrong answer as the microservice may very well be running in one of the other nodes that were not destroyed.