ਇੰਜੀਨੀਅਰਿੰਗ ਟੀਮਾਂ ਅਜੇ ਵੀ ਇਸ ਗੱਲ 'ਤੇ ਬਹਿਸ ਕਰਨ ਵਿੱਚ ਪੂਰੀ ਦੁਪਹਿਰ ਬਰਬਾਦ ਕਰ ਦਿੰਦੀਆਂ ਹਨ ਕਿ ਕੀ REST ਖਤਮ ਹੋ ਗਿਆ ਹੈ ਜਾਂ ਕੀ gRPC ਨੇ ਬਾਕੀ ਸਭ ਕੁਝ ਬੇਕਾਰ ਕਰ ਦਿੱਤਾ ਹੈ। ਉਹ ਬਹਿਸ ਅਸਲ ਨੁਕਤੇ ਨੂੰ ਮਿਸ ਕਰਦੀ ਹੈ। ਤੁਸੀਂ ਸਭ ਤੋਂ ਵਧੀਆ ਪ੍ਰੋਟੋਕੋਲ ਨਹੀਂ ਚੁਣ ਰਹੇ ਹੋ। ਤੁਸੀਂ ਸਹੀ ਸੀਮਾ (boundary) ਚੁਣ ਰਹੇ ਹੋ। ਇੱਕ ਪ੍ਰੋਟੋਕੋਲ ਜੋ ਤੁਹਾਡੇ Kubernetes ਕਲੱਸਟਰ ਦੇ ਅੰਦਰ ਵਧੀਆ ਕੰਮ ਕਰਦਾ ਹੈ, ਉਹ ਉਦੋਂ ਦਮ ਤੋੜ ਦੇਵੇਗਾ ਜਦੋਂ ਤੁਸੀਂ ਇਸਨੂੰ ਹਜ਼ਾਰਾਂ ਬਾਹਰੀ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਸੌਂਪੋਗੇ। ਇੱਕ ਜੋ ਤੁਹਾਡੀ ਮੋਬਾਈਲ ਐਪ ਦੀ ਕੀਮਤੀ ਬੈਂਡਵਿਡਥ ਬਚਾਉਂਦਾ ਹੈ, ਉਹ ਤੁਹਾਡੇ ਇਨਫਰਾਸਟ੍ਰਕਚਰ ਨੂੰ ਬਰਬਾਦ ਕਰ ਸਕਦਾ ਹੈ ਜੇਕਰ ਤੁਸੀਂ ਇਸਨੂੰ ਕਿਸੇ ਵੀ ਜਨਤਕ ਕੁਐਰੀ (public query) ਲਈ ਖੋਲ੍ਹ ਦਿੰਦੇ ਹੋ। ਇਸ ਫੈਸਲੇ ਨੂੰ ਤਕਨਾਲੋਜੀ ਦੀ ਪ੍ਰਸਿੱਧੀ ਦੀ ਮੁਕਾਬਲੇ ਵਾਂਗ ਨਾ ਲਓ, ਕਿਉਂਕਿ ਇਹ ਅਜਿਹਾ ਆਰਕੀਟੈਕਚਰਲ ਕਰਜ਼ਾ (architectural debt) ਪੈਦਾ ਕਰਦਾ ਹੈ ਜੋ ਤੁਹਾਡੀ ਟੀਮ ਦੇ ਹਰ ਮੌਜੂਦਾ ਮੈਂਬਰ ਤੋਂ ਵੀ ਵੱਧ ਸਮੇਂ ਤੱਕ ਰਹੇਗਾ।

ਸੀਮਾ ਦਾ ਸਿਧਾਂਤ (The Boundary Principle)

ਆਰਕੀਟੈਕਚਰ ਸਮਝੌਤਿਆਂ (trade-offs) ਬਾਰੇ ਹੈ, ਨਾ ਕਿ ਚੈਂਪੀਅਨਾਂ ਬਾਰੇ। ਸਹੀ ਸਵਾਲ ਕਦੇ ਵੀ ਇਹ ਨਹੀਂ ਹੁੰਦਾ ਕਿ "ਕਿਹੜਾ ਸਭ ਤੋਂ ਤੇਜ਼ ਹੈ?" ਜਾਂ "ਕਿਹੜਾ ਸਭ ਤੋਂ ਨਵਾਂ ਹੈ?" ਸਗੋਂ ਇਹ ਹੈ ਕਿ "ਤਾਰ (wire) ਦੇ ਦੂਜੇ ਪਾਸੇ ਕੌਣ ਬੈਠਾ ਹੈ, ਅਤੇ ਉਹ ਕੀ ਕੰਟਰੋਲ ਕਰਦੇ ਹਨ?" ਪ੍ਰੋਟੋਕੋਲ ਸੀਮਾ ਵਸਤੂਆਂ (boundary objects) ਹਨ। ਗਲਤ ਪ੍ਰੋਟੋਕੋਲ ਚੁਣਨਾ ਸਿਰਫ਼ ਤੁਹਾਨੂੰ ਹੌਲੀ ਹੀ ਨਹੀਂ ਕਰਦਾ, ਸਗੋਂ ਇਹ ਤੁਹਾਡੇ ਸਿਸਟਮ ਵਿੱਚ ਸਾਲਾਂ ਲਈ ਗਲਤੀਆਂ ਨੂੰ ਜੜ੍ਹਾਂ ਫੜਾ ਦਿੰਦਾ ਹੈ।

ਪਬਲਿਕ APIs: REST ਬੋਰਿੰਗ ਨਹੀਂ ਹੈ, ਇਹ ਜ਼ਿੰਮੇਵਾਰ ਹੈ

ਜਦੋਂ ਤੁਹਾਡਾ ਉਪਭੋਗਤਾ (consumer) ਇੱਕ ਬਾਹਰੀ ਡਿਵੈਲਪਰ ਹੁੰਦਾ ਹੈ ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਕਦੇ ਮਿਲੇ ਵੀ ਨਹੀਂ, ਤਾਂ ਤੁਹਾਡੀ API ਇੱਕ ਉਤਪਾਦ (product) ਹੁੰਦੀ ਹੈ, ਨਾ ਕਿ ਸਿਰਫ਼ ਇੱਕ ਇੰਟਰਫੇਸ। ਉਹ ਡਿਵੈਲਪਰ ਰਾਤ ਦੇ ਦੋ ਵਜੇ ਸਿਰਫ਼ curl ਅਤੇ ਇੱਕ Postman collection ਦੀ ਮਦਦ ਨਾਲ ਡੀਬੱਗਿੰਗ ਕਰ ਰਿਹਾ ਹੁੰਦਾ ਹੈ। ਜੇਕਰ ਉਨ੍ਹਾਂ ਨੂੰ ਆਪਣੀ ਪਹਿਲੀ ਸਫਲ ਕਾਲ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਕਸਟਮ ਕਲਾਇੰਟ ਲਾਇਬ੍ਰੇਰੀ ਇੰਸਟਾਲ ਕਰਨੀ ਪਵੇ ਜਾਂ ਕੋਈ ਸਕੀਮਾ ਭਾਸ਼ਾ ਸਿੱਖਣੀ ਪਵੇ, ਤਾਂ ਤੁਸੀਂ ਉਨ੍ਹਾਂ ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਗੁਆ ਚੁੱਕੇ ਹੋ।

REST ਇੱਥੇ ਇਸ ਲਈ ਬਚਿਆ ਹੋਇਆ ਹੈ ਕਿਉਂਕਿ ਇਹ ਖੁਦ ਵੈੱਬ ਹੈ। HTTP ਮੈਥਡਸ, ਸਟੇਟਸ ਕੋਡਸ, ਅਤੇ JSON ਸਾਂਝੀ ਭਾਸ਼ਾ ਹਨ। Caching ਕੋਈ ਬਾਅਦ ਵਿੱਚ ਸੋਚੀ ਗਈ ਚੀਜ਼ ਨਹੀਂ ਹੈ; ਇਹ ਉਹ ਇਨਫਰਾਸਟ੍ਰਕਚਰ ਹੈ ਜੋ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ। ਬ੍ਰਾਊਜ਼ਰ, CDNs, ਅਤੇ edge caches Cache-Control ਹੈਡਰਾਂ ਅਤੇ ETag ਵੈਲੀਡੇਸ਼ਨ ਨੂੰ ਕੁਦਰਤੀ ਤੌਰ 'ਤੇ ਸਮਝਦੇ ਹਨ। ਤੁਸੀਂ ਇੱਕ ਸਟੈਂਡਰਡ CDN ਦੇ ਪਿੱਛੇ REST API ਰੱਖ ਸਕਦੇ ਹੋ ਅਤੇ ਕੈਸ਼ਿੰਗ ਲੌਜਿਕ ਦੀ ਇੱਕ ਵੀ ਲਾਈਨ ਲਿਖੇ ਬਿਨਾਂ ਤੁਰੰਤ ਬੈਂਡਵਿਡਥ ਦੀ ਬਚਤ ਕਰ ਸਕਦੇ ਹੋ। ਇਹ ਉਦੋਂ ਮਾਇਨੇ ਰੱਖਦਾ ਹੈ ਜਦੋਂ ਜਨਤਕ ਟ੍ਰੈਫਿਕ ਅਨਿਸ਼ਚਿਤ ਹੁੰਦਾ ਹੈ ਅਤੇ ਤੁਸੀਂ ਤੁਹਾਡੇ ਕਲਾਉਡ ਤੋਂ ਬਾਹਰ ਜਾਣ ਵਾਲੇ ਹਰ ਗੀਗਾਬਾਈਟ ਲਈ ਭੁਗਤਾਨ ਕਰ ਰਹੇ ਹੁੰਦੇ ਹੋ।

ਇਸਦੇ ਉਲਟ, GraphQL ਇੱਕ ਜਨਤਕ ਸੀਮਾ 'ਤੇ ਭਾਰੀ ਟੈਕਸ ਲਗਾਉਂਦਾ ਹੈ। ਜਨਤਕ GraphQL ਐਂਡਪੁਆਇੰਟਸ ਨੂੰ query cost analysis, depth limiting, ਅਤੇ complexity scoring ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਤਾਂ ਜੋ ਇੱਕ ਲਾਪਰਵਾਹ ਜਾਂ ਮਾਲੀਸ਼ੀਆ ਭਰਪੂਰ ਕੁਐਰੀ ਤੁਹਾਡੇ ਡਾਟਾਬੇਸ ਨੂੰ ਤਬਾਹ ਨਾ ਕਰ ਦੇਵੇ। ਤੁਸੀਂ ਸਿਰਫ਼ ਇੱਕ API ਨਹੀਂ ਭੇਜ ਰਹੇ ਹੋ; ਤੁਸੀਂ ਇੱਕ query execution engine, ਇੱਕ rate-limiting ਰਣਨੀਤੀ, ਅਤੇ ਇੱਕ compute billing ਮਾਡਲ ਬਣਾ ਰਹੇ ਹੋ। ਜਦੋਂ ਤੱਕ ਤੁਹਾਡੇ ਕੋਲ ਸਭ ਤੋਂ ਵੱਡੇ ਪਲੇਟਫਾਰਮਾਂ ਵਰਗੀ ਕਾਰਜਸ਼ੀਲ ਸਮਰੱਥਾ ਨਹੀਂ ਹੈ, ਉਦੋਂ ਤੱਕ ਉਹ ਓਵਰਹੈੱਡ ਇੱਕ ਜਨਤਕ ਸਰਫੇਸ ਖੇਤਰ ਲਈ ਬੇਸੁਧ ਹੈ। REST ਡਿਫੌਲਟ ਤੌਰ 'ਤੇ ਸੁਰੱਖਿਆ ਦੇ ਮਾਪਦੰਡ (guardrails) ਸੈੱਟ ਕਰਦਾ ਹੈ। ਹਰੇਕ ਐਂਡਪੁਆਇੰਟ ਇੱਕ ਹੀ ਕੰਮ ਕਰਦਾ ਹੈ। ਉਪਭੋਗਤਾ ਸਿਰਫ਼ ਉਹੀ ਫੈਚ ਕਰਦੇ ਹਨ ਜੋ ਤੁਸੀਂ ਪੇਸ਼ ਕਰਦੇ ਹੋ, ਨਾ ਕਿ ਉਹ ਜੋ ਉਹ ਕਲਪਨਾ ਕਰ ਸਕਦੇ ਹਨ।

ਅੰਦਰੂਨੀ ਸੇਵਾਵਾਂ: ਪੂਰੇ ਰਸਤੇ 'ਤੇ ਆਪਣਾ ਕੰਟਰੋਲ ਰੱਖੋ

ਤੁਹਾਡੇ ਸੰਗਠਨ ਦੇ ਅੰਦਰ, ਗੱਲਬਾਤ ਬਦਲ ਜਾਂਦੀ ਹੈ। ਤੁਸੀਂ ਕਲਾਇੰਟ ਅਤੇ ਸਰਵਰ ਦੋਵਾਂ ਨੂੰ ਕੰਟਰੋਲ ਕਰਦੇ ਹੋ। ਤੁਸੀਂ ਕਾਲ ਚੇਨ ਵਿੱਚ