The development team at an e-commerce company is designing a checkout microservice which would manage shopping cart sessions for users. The microservice must be capable of maintaining a user's shopping cart contents between sessions without compromising on the system's overall resilience and scalability. What architectural design will best meet these requirements while adhering to microservices best practices?
Store the session states in in-memory storage within the microservice to facilitate quick access.
Design the microservice to be stateful, so it directly manages user shopping cart sessions.
Utilize an AWS RDS instance to store user session states within a relational database schema.
Implement an external session store to manage the shopping cart session state, allowing the microservice to remain stateless.