ਮੇਰੇ ਸਭ ਤੋਂ ਬੋਰਿੰਗ ਫੈਸਲੇ ਹੀ ਮੇਰੇ ਸਭ ਤੋਂ ਵਧੀਆ ਫੈਸਲੇ ਕਿਉਂ ਸਨ
ਮੈਂ ਸੋਚਦਾ ਸੀ ਕਿ ਇੱਕ ਚੰਗਾ ਡਿਵੈਲਪਰ ਹੋਣ ਦਾ ਮਤਲਬ ਗੁੰਝਲਦਾਰ ਕੋਡ ਲਿਖਣਾ ਹੈ।
ਮੈਂ ਗਲਤ ਸੀ।
ਇੱਕ ਮੈਡੀਕਲ ਕਲੀਨਿਕ ਲਈ MVP ਡਿਜ਼ਾਈਨ ਕਰਦੇ ਸਮੇਂ, ਜੋ ਅੰਤ ਵਿੱਚ ਇੱਕ multi-tenant SaaS ਬਣ ਜਾਵੇਗਾ, ਮੈਂ ਇੱਕ ਸਖ਼ਤ ਸਬਕ ਸਿੱਖਿਆ। ਕੋਡ ਲਿਖਣਾ ਸੌਖਾ ਹਿੱਸਾ ਹੈ। ਮੁਸ਼ਕਲ ਹਿੱਸਾ ਇਹ ਫੈਸਲਾ ਕਰਨਾ ਹੈ ਕਿ ਕੀ ਨਹੀਂ ਬਣਾਉਣਾ ਹੈ।
ਮਨ ਵਿੱਚ ਲਾਲਚ ਸੀ ਕਿ microservices, events, ਅਤੇ Kubernetes ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਵੇ। ਇਹ CV 'ਤੇ ਬਹੁਤ ਵਧੀਆ ਲੱਗਦਾ ਹੈ। ਪਰ microservices ਦੀ ਕੀਮਤ ਬਹੁਤ ਜ਼ਿਆਦਾ ਹੁੰਦੀ ਹੈ। ਤੁਹਾਨੂੰ ਗੁੰਝਲਦਾਰ pipelines, versioning ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ, ਅਤੇ ਮੁਸ਼ਕਲ debugging ਦੇ ਰੂਪ ਵਿੱਚ ਇਸਦੀ ਕੀਮਤ ਚੁਕਾਉਣੀ ਪੈਂਦੀ ਹੈ।
ਤਿੰਨ ਲੋਕਾਂ ਦੀ ਟੀਮ ਅਤੇ ਕੁਝ ਹੀ ਯੂਜ਼ਰਸ ਦੇ ਨਾਲ, microservices ਸਿਰਫ਼ ਵਾਧੂ ਕੰਮ ਹਨ। ਤੁਸੀਂ ਉਹਨਾਂ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰ ਰਹੇ ਹੁੰਦੇ ਹੋ ਜੋ ਅਜੇ ਤੱਕ ਤੁਹਾਡੇ ਕੋਲ ਹਨ ਹੀ ਨਹੀਂ।
ਇਸ ਦੀ ਬਜਾਏ, ਮੈਂ .NET 8 ਅਤੇ PostgreSQL ਦੇ ਨਾਲ ਇੱਕ ਸਧਾਰਨ layered architecture ਨੂੰ ਚੁਣਿਆ। ਇਸਦੀ ਲਗਤ ਲਗਭਗ $30 ਪ੍ਰਤੀ ਮਹੀਨਾ ਹੈ।
ਮੈਂ ਅਜਿਹੇ ਸਮਾਰਟ ਅਤੇ ਸਸਤੇ ਫੈਸਲਿਆਂ 'ਤੇ ਧਿਆਨ ਦਿੱਤਾ ਜਿਨ੍ਹਾਂ ਨੂੰ ਬਾਅਦ ਵਿੱਚ ਬਦਲਣਾ ਮਹਿੰਗਾ ਪੈ ਸਕਦਾ ਹੈ:
• ਪਹਿਲੇ ਦਿਨ ਤੋਂ ਹੀ ਹਰ ਟੇਬਲ ਵਿੱਚ TenantId ਕਾਲਮ ਜੋੜਿਆ। • ਪਹਿਲੇ commit ਤੋਂ ਹੀ Docker ਦੀ ਵਰਤੋਂ ਕੀਤੀ। • WhatsApp provider ਲਈ ਇੱਕ interface ਬਣਾਇਆ।
ਇਹਨਾਂ ਵਿੱਚੋਂ ਹਰ ਇੱਕ ਵਿੱਚ ਸਿਰਫ਼ ਇੱਕ ਦੁਪਹਿਰ ਦਾ ਸਮਾਂ ਲੱਗਿਆ। ਇਹਨਾਂ ਨੇ ਭਵਿੱਖ ਦੇ migrations ਨੂੰ ਸਧਾਰਨ configuration ਬਦਲਾਅ ਵਿੱਚ ਬਦਲ ਦਿੱਤਾ।
ਮੈਂ ਵਪਾਰਕ ਲੋੜਾਂ (business needs) ਦੇ ਅਨੁਸਾਰ patterns ਨੂੰ ਅਪਣਾਉਣਾ ਵੀ ਸਿੱਖਿਆ।
ਉਦਾਹਰਨ ਲਈ, ਮੈਂ WhatsApp ਨੋਟੀਫਿਕੇਸ਼ਨਾਂ ਲਈ Outbox pattern ਦੀ ਵਰਤੋਂ ਕੀਤੀ। ਅਪੌਇੰਟਮੈਂਟ ਬੁੱਕ ਕਰਨਾ ਤੇਜ਼ ਅਤੇ ਭਰੋਸੇਮੰਦ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਮੈਸੇਜ ਭੇਜਣਾ ਦੋ ਸਕਿੰਟ ਬਾਅਦ ਵੀ ਹੋ ਸਕਦਾ ਹੈ। ਜੇਕਰ WhatsApp ਹੌਲੀ ਹੈ, ਤਾਂ ਵੀ ਅਪੌਇੰਟਮੈਂਟ ਦਾ ਕੰਮ ਚਲਦਾ ਰਹੇਗਾ।
ਹਾਲਾਂਕਿ, ਮੈਂ ਮੈਡੀਕਲ ਰਿਕਾਰਡਾਂ ਲਈ "eventual consistency" ਨੂੰ ਰੱਦ ਕਰ ਦਿੱਤਾ। ਮੈਡੀਕਲ ਡਾਇਗਨੋਸਿਸ (diagnosis) ਸਹੀ ਅਤੇ ਤੁਰੰਤ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਹੈਲਥਕੇਅਰ ਵਿੱਚ, ਕਾਨੂੰਨੀ ਲੋੜਾਂ ਅਸਲ ਵਿੱਚ ਆਰਕੀਟੈਕਚਰਲ ਲੋੜਾਂ ਹੁੰਦੀਆਂ ਹਨ।
ਮੈਂ ਅਸਲ ਗਣਿਤ (math) 'ਤੇ ਵੀ ਨਜ਼ਰ ਮਾਰੀ।
Kubernetes setup (EKS) ਦੀ ਲਗਤ $545 ਤੋਂ $615 ਪ੍ਰਤੀ ਮਹੀਨਾ ਹੋਵੇਗੀ। AWS Fargate setup ਦੀ ਲਗਤ $350 ਤੋਂ $420 ਪ੍ਰਤੀ ਮਹੀਨਾ ਹੈ।
ਇਹ ਹਰ ਮਹੀਨੇ $150 ਤੋਂ ਵੱਧ ਦੀ ਬਚਤ ਹੈ। ਮੈਂ Fargate ਨੂੰ ਚੁਣਿਆ ਕਿਉਂਕਿ ਸਾਡੇ ਮੌਜੂਦਾ ਆਕਾਰ ਲਈ ਇਹ ਵਧੇਰੇ ਸਧਾਰਨ ਅਤੇ ਸਸਤਾ ਹੈ।
ਮੇਰੀ ਰਣਨੀਤੀ ਸਧਾਰਨ ਹੈ:
- ਪਹਿਲਾਂ layers ਦੀ ਵਰਤੋਂ ਕਰੋ।
- Events ਦੀ ਵਰਤੋਂ ਉਦੋਂ ਕਰੋ ਜਦੋਂ ਬਾਹਰੀ ਨਿਰਭਰਤਾਵਾਂ (ਜਿਵੇਂ ਕਿ WhatsApp) ਤੁਹਾਡੇ ਸਿਸਟਮ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਨ ਲੱਗਣ।
- Microservices ਵੱਲ ਉਦੋਂ ਹੀ ਵਧੋ ਜਦੋਂ ਵੋਲਯੂਮ (volume) ਅਤੇ ਟੀਮ ਦਾ ਆਕਾਰ ਇਸਦੀ ਮੰਗ ਕਰੇ।
ਅਜਿਹੇ ਵੀਹ ਕਲਾਇੰਟਸ ਲਈ ਡਿਜ਼ਾਈਨ ਨਾ ਕਰੋ ਜੋ ਅਜੇ ਤੁਹਾਡੇ ਕੋਲ ਹਨ ਹੀ ਨਹੀਂ। ਉਸ ਕਲਾਇੰਟ ਲਈ ਬਣਾਓ ਜੋ ਅੱਜ ਤੁਹਾਨੂੰ ਪੈਸੇ ਦੇ ਰਿਹਾ ਹੈ।