Answering your core question - you should maintain Subscription's lifecycle in your own database while relying on Stripe's Webhook deliveries.
Stripe will generate and deliver webhook event to your assigned endpoint for any changes related to the Subscription - https://docs.stripe.com/billing/subscriptions/webhooks
You can listen to the appropriate webhook events and make real-time changes to your stored data to keep it consistent.
This is a better way because you don't need to constantly poll Stripe's API to retrieve Subscription status etc. This would also allow you to stay within your default rate limits.