Architecture Decision Record

Active theme: Light

← ਫੈਸਲਾ ਰਿਕਾਰਡ ਉਦਾਹਰਨਾਂ

ਮੋਨੋਰੈਪੋ ਬਨਾਮ ਮਲਟੀਰੈਪੋ

ਸਮੱਗਰੀ:

ਸਾਰ

ਮੁੱਦਾ

ਸਾਡੇ ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ ਸਾਫਟਵੇਅਰ ਦੀਆਂ ਤਿੰਨ ਵੱਡੀਆਂ ਸ਼੍ਰੇਣੀਆਂ ਦਾ ਵਿਕਾਸ ਸ਼ਾਮਲ ਹੈ:

  • ਫਰੰਟ-ਐਂਡ GUI
  • ਮਿਡਲਵੇਅਰ ਸੇਵਾਵਾਂ
  • ਬੈਕ-ਐਂਡ ਸਰਵਰ

ਜਦੋਂ ਅਸੀਂ ਵਿਕਾਸ ਕਰਦੇ ਹਾਂ, ਸਾਡਾ ਸੋਰਸ ਕੋਡ ਪ੍ਰਬੰਧਨ (SCM) ਵਰਜਨ ਕੰਟਰੋਲ ਸਿਸਟਮ (VCS) git ਹੈ।

ਸਾਨੂੰ ਚੁਣਨਾ ਪਵੇਗਾ ਕਿ ਅਸੀਂ ਆਪਣਾ ਕੋਡ ਵਿਵਸਥਿਤ ਕਰਨ ਲਈ git ਕਿਵੇਂ ਵਰਤਦੇ ਹਾਂ।

ਸਿਖਰਲੇ ਪੱਧਰ ਦੀ ਚੋਣ ਇਹ ਹੈ ਕਿ "ਮੋਨੋਰੈਪੋ" ਜਾਂ "ਪੌਲੀਰੈਪੋ" ਜਾਂ "ਹਾਈਬ੍ਰਿਡ" ਵਜੋਂ ਵਿਵਸਥਿਤ ਕਰੀਏ:

  • ਮੋਨੋਰੈਪੋ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਅਸੀਂ ਸਾਰੇ ਹਿੱਸੇ ਇੱਕ ਵੱਡੇ ਰੈਪੋ ਵਿੱਚ ਰੱਖਦੇ ਹਾਂ
  • ਪੌਲੀਰੈਪੋ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਅਸੀਂ ਹਰ ਹਿੱਸਾ ਆਪਣੇ ਵੱਖਰੇ ਰੈਪੋ ਵਿੱਚ ਰੱਖਦੇ ਹਾਂ
  • ਹਾਈਬ੍ਰਿਡ ਦਾ ਮਤਲਬ ਹੈ ਮੋਨੋਰੈਪੋ ਅਤੇ ਪੌਲੀਰੈਪੋ ਦਾ ਕੋਈ ਮਿਸ਼ਰਣ

ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ ਕਿਰਪਾ ਕਰਕੇ https://github.com/joelparkerhenderson/monorepo-vs-polyrepo ਵੇਖੋ

ਫੈਸਲਾ

ਮੋਨੋਰੈਪੋ ਉਦੋਂ ਜਦੋਂ ਕੋਈ ਸੰਸਥਾ/ਟੀਮ/ਪ੍ਰੋਜੈਕਟ ਮੁਕਾਬਲਤਨ ਛੋਟਾ ਹੋਵੇ, ਅਤੇ ਤੇਜ਼ ਦੁਹਰਾਓ ਸਥਿਰਤਾ ਕਾਇਮ ਰੱਖਣ ਨਾਲੋਂ ਉੱਚੀ ਤਰਜੀਹ ਹੋਵੇ।

ਪੌਲੀਰੈਪੋ ਉਦੋਂ ਜਦੋਂ ਕੋਈ ਸੰਸਥਾ/ਟੀਮ/ਪ੍ਰੋਜੈਕਟ ਮੁਕਾਬਲਤਨ ਵੱਡਾ ਹੋਵੇ, ਅਤੇ ਸਥਿਰਤਾ ਕਾਇਮ ਰੱਖਣਾ ਤੇਜ਼ ਦੁਹਰਾਓ ਨਾਲੋਂ ਉੱਚੀ ਤਰਜੀਹ ਹੋਵੇ।

ਸਥਿਤੀ

ਤੈਅ ਹੋਇਆ। ਜੇ/ਜਦੋਂ ਮੋਨੋਰੈਪੋ ਅਤੇ/ਜਾਂ ਪੌਲੀਰੈਪੋ ਦੇ ਪ੍ਰਬੰਧ ਲਈ ਨਵੇਂ ਟੂਲ ਉਪਲਬਧ ਹੋਣ, ਤਾਂ ਮੁੜ ਵਿਚਾਰ ਕਰਨ ਲਈ ਖੁੱਲ੍ਹੇ ਹਾਂ।

ਵੇਰਵੇ

ਧਾਰਨਾਵਾਂ

ਜੋ ਸਾਰਾ ਕੋਡ ਅਸੀਂ ਵਿਕਸਿਤ ਕਰ ਰਹੇ ਹਾਂ, ਉਹ ਇੱਕ ਸੰਸਥਾ ਦੀਆਂ ਪੇਸ਼ਕਸ਼ਾਂ ਲਈ ਹੈ, ਆਮ ਜਨਤਾ ਲਈ ਨਹੀਂ। ਯਾਨੀ ਬ੍ਰੋਕਰ-ਡੀਲਰ ਦਾ ਆਮ ਜਨਤਾ ਦੇ ਸਵੈ-ਸੇਵੀ ਡਿਵੈਲਪਰਾਂ ਵਰਗੀ ਕਿਸੇ ਚੀਜ਼ ਦਾ ਟੀਚਾ ਨਹੀਂ ਹੈ।

ਬੰਦਸ਼ਾਂ

ਬੰਦਸ਼ਾਂ https://github.com/joelparkerhenderson/monorepo-vs-polyrepo ਉੱਤੇ ਚੰਗੀ ਤਰ੍ਹਾਂ ਦਸਤਾਵੇਜ਼ੀ ਰੂਪ ਵਿੱਚ ਹਨ

ਪੱਖ

ਅਸੀਂ Google, Facebook ਆਦਿ ਦੀ ਸ਼ੈਲੀ ਵਿੱਚ ਮੋਨੋਰੈਪੋ ਬਾਰੇ ਵਿਚਾਰ ਕੀਤਾ। ਸਾਡਾ ਮੰਨਣਾ ਹੈ ਕਿ ਮੋਨੋਰੈਪੋ ਦੇ ਪੈਮਾਨੇ ਸੰਬੰਧੀ ਕੋਈ ਵੀ ਮਸਲੇ ਇੰਨੇ ਦੂਰ ਭਵਿੱਖ ਵਿੱਚ ਹਨ ਕਿ ਜਦੋਂ ਤੱਕ ਸਾਨੂੰ ਉਨ੍ਹਾਂ ਦੀ ਲੋੜ ਪਵੇਗੀ, ਅਸੀਂ Google ਅਤੇ Facebook ਵਾਲੇ ਹੀ ਅਭਿਆਸਾਂ ਦਾ ਲਾਭ ਲੈ ਸਕਾਂਗੇ।

ਅਸੀਂ ਆਮ Git ਓਪਨ ਸੋਰਸ ਪ੍ਰੋਜੈਕਟਾਂ, ਜਿਵੇਂ ਕਿ Google Android, Facebook React ਆਦਿ, ਦੀ ਸ਼ੈਲੀ ਵਿੱਚ ਪੌਲੀਰੈਪੋ ਬਾਰੇ ਵਿਚਾਰ ਕੀਤਾ। ਸਾਡਾ ਮੰਨਣਾ ਹੈ ਕਿ ਇਹ ਆਮ ਜਨਤਾ ਦੀ ਸ਼ਮੂਲੀਅਤ (ਜਿਵੇਂ ਕਿ ਦੁਨੀਆ ਵਿੱਚ ਕੋਈ ਵੀ ਕੋਡ ਉੱਤੇ ਕੰਮ ਕਰ ਸਕਦਾ ਹੈ) ਅਤੇ ਵਿਅਕਤੀਗਤ ਉਪਲਬਧਤਾ (ਜਿਵੇਂ ਕਿ ਪ੍ਰੋਜੈਕਟ ਬਿਨਾਂ ਕਿਸੇ ਹੋਰ ਹਿੱਸੇ ਦੇ ਆਪਣੇ-ਆਪ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ) ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਚੋਣ ਹਨ।

ਦਲੀਲ

ਜਦੋਂ ਕੋਈ ਸੰਸਥਾ/ਟੀਮ/ਪ੍ਰੋਜੈਕਟ ਮੁਕਾਬਲਤਨ ਛੋਟਾ ਹੋਵੇ, ਅਸੀਂ ਮੋਨੋਰੈਪੋ ਚੁਣਦੇ ਹਾਂ, ਕਿਉਂਕਿ ਤੇਜ਼ ਦੁਹਰਾਓ ਤਰਜੀਹ ਵਿੱਚ ਸਥਿਰਤਾ ਕਾਇਮ ਰੱਖਣ ਨਾਲੋਂ ਕਾਫ਼ੀ ਉੱਚਾ ਹੈ

ਜਦੋਂ ਕੋਈ ਸੰਸਥਾ/ਟੀਮ/ਪ੍ਰੋਜੈਕਟ ਮੁਕਾਬਲਤਨ ਵੱਡਾ ਹੋਵੇ, ਅਸੀਂ ਪੌਲੀਰੈਪੋ ਚੁਣਦੇ ਹਾਂ, ਕਿਉਂਕਿ ਸਥਿਰਤਾ ਕਾਇਮ ਰੱਖਣਾ ਤਰਜੀਹ ਵਿੱਚ ਤੇਜ਼ ਦੁਹਰਾਓ ਨਾਲੋਂ ਕਾਫ਼ੀ ਉੱਚਾ ਹੈ।

ਪ੍ਰਭਾਵ

ਜੇ CI+CD ਲਈ ਪਹਿਲਾਂ ਤੋਂ ਕੋਈ ਪਾਈਪਲਾਈਨ ਮੌਜੂਦ ਹੈ, ਤਾਂ ਸਾਨੂੰ ਇੱਕ ਰੈਪੋ ਦੇ ਅੰਦਰ ਕਈ ਪ੍ਰੋਜੈਕਟਾਂ ਦੀ ਟੈਸਟਿੰਗ ਲਈ ਇਸ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣ ਦੀ ਲੋੜ ਪੈ ਸਕਦੀ ਹੈ।

ਮੋਨੋਰੈਪੋ ਲਈ ਪੂਰੀ ਬਿਲਡ ਵਿੱਚ CI+CD ਨੂੰ ਵਧੇਰੇ ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ, ਕਿਉਂਕਿ CI+CD ਮੋਨੋਰੈਪੋ ਦੇ ਸਾਰੇ ਪ੍ਰੋਜੈਕਟ ਬਿਲਡ ਕਰ ਸਕਦਾ ਹੈ।

ਜੇ ਕੋਈ ਸੰਸਥਾ/ਟੀਮ/ਪ੍ਰੋਜੈਕਟ ਵਧਦਾ ਹੈ, ਤਾਂ ਮੋਨੋਰੈਪੋ ਵਿੱਚ ਪੈਮਾਨੇ ਦੇ ਮਸਲੇ ਹੋਣਗੇ।

ਮੋਨੋਰੈਪੋ ਦੇ ਪੈਮਾਨੇ ਦੇ ਮਸਲੇ ਪੌਲੀਰੈਪੋ ਵੱਲ ਜਾਣ ਨੂੰ ਵਧਦੀ ਕੀਮਤ ਵਾਲਾ ਬਣਾ ਸਕਦੇ ਹਨ।

ਮੋਨੋਰੈਪੋ ਤੋਂ ਪੌਲੀਰੈਪੋ ਵੱਲ ਜਾਣਾ ਇੱਕ ਮਹੱਤਵਪੂਰਨ devops ਕਾਰਜ ਹੈ, ਅਤੇ ਇਸ ਦੀ ਯੋਜਨਾ ਬਣਾਉਣ, ਪ੍ਰਬੰਧ ਕਰਨ ਅਤੇ ਪ੍ਰੋਗਰਾਮ ਕਰਨ ਦੀ ਲੋੜ ਪਵੇਗੀ।

ਸੰਬੰਧਿਤ

ਸੰਬੰਧਿਤ ਫੈਸਲੇ

ਅਸੀਂ ਮੋਨੋਰੈਪੋ (ਜਿਵੇਂ ਕਿ Google Bazel) ਅਤੇ ਪੌਲੀਰੈਪੋ (ਜਿਵੇਂ ਕਿ Lyft Refactorator) ਦੇ ਪ੍ਰਬੰਧ ਲਈ ਸੰਬੰਧਿਤ ਟੂਲਿੰਗ ਬਾਰੇ ਫੈਸਲੇ ਬਣਾਵਾਂਗੇ।

ਸੰਬੰਧਿਤ ਲੋੜਾਂ

ਸਾਨੂੰ CI+CD ਪਾਈਪਲਾਈਨ ਨੂੰ git ਨਾਲ ਚੰਗੀ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਨ ਲਈ ਵਿਕਸਿਤ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।

ਸੰਬੰਧਿਤ ਕਲਾਕ੍ਰਿਤੀਆਂ

ਅਸੀਂ ਉਮੀਦ ਕਰਦੇ ਹਾਂ ਕਿ ਰੈਪੋ ਸੰਗਠਨ ਵਿੱਚ ਪ੍ਰੋਵੀਜ਼ਨਿੰਗ, ਸੰਰਚਨਾ ਪ੍ਰਬੰਧਨ, ਟੈਸਟਿੰਗ ਅਤੇ ਇਸ ਤਰ੍ਹਾਂ ਦੇ devops ਖੇਤਰਾਂ ਲਈ ਸੰਬੰਧਿਤ ਕਲਾਕ੍ਰਿਤੀਆਂ ਹੋਣਗੀਆਂ।

ਸੰਬੰਧਿਤ ਸਿਧਾਂਤ

ਆਸਾਨੀ ਨਾਲ ਪਲਟਣਯੋਗ। ਜੇ ਮੋਨੋਰੈਪੋ ਅਮਲ ਵਿੱਚ ਕੰਮ ਨਹੀਂ ਕਰਦਾ, ਜਾਂ ਅਗਵਾਈ ਨੂੰ ਇਹ ਪਸੰਦ ਨਹੀਂ ਹੈ, ਤਾਂ ਪੌਲੀਰੈਪੋ ਵਿੱਚ ਬਦਲਣਾ ਸੌਖਾ ਹੈ।

ਗਾਹਕ ਪ੍ਰਤੀ ਲਗਨ। ਅਸੀਂ ਪ੍ਰੋਜੈਕਟ ਨੂੰ ਗਾਹਕਾਂ ਦੇ ਹੱਥਾਂ ਵਿੱਚ ਪਹੁੰਚਾਉਣ ਦੀ ਕਦਰ ਕਰਦੇ ਹਾਂ, ਅਤੇ ਸਾਡਾ ਮੰਨਣਾ ਹੈ ਕਿ ਮੋਨੋਰੈਪੋ ਸਾਨੂੰ ਪੌਲੀਰੈਪੋ ਨਾਲੋਂ ਤੇਜ਼ੀ ਨਾਲ ਉੱਥੇ ਪਹੁੰਚਾ ਸਕਦਾ ਹੈ, ਅਤੇ ਸਾਨੂੰ ਤੇਜ਼ੀ ਨਾਲ ਦੁਹਰਾਓ ਕਰਨ ਵਿੱਚ ਵੀ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ।

ਵੱਡਾ ਸੋਚੋ। Google ਅਤੇ Facebook ਪੌਲੀਰੈਪੋ ਦੇ ਮੁਕਾਬਲੇ ਮੋਨੋਰੈਪੋ ਦੇ ਬਹੁਤ ਮਜ਼ਬੂਤ ਸਮਰਥਕ ਹਨ, ਕਿਉਂਕਿ ਸਾਰੀਆਂ ਮੁੱਖ ਪੇਸ਼ਕਸ਼ਾਂ ਨੂੰ ਇਕੱਠੇ ਵਿਕਸਿਤ/ਟੈਸਟ/ਡਿਪਲਾਇ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।

ਨੋਟ

ਕੋਈ ਵੀ ਨੋਟ ਇੱਥੇ ਜੋੜੋ।