وقتی یک سامانهٔ چندعاملی میسازید، خیلی زود با تصمیمی کلیدی در معماری روبهرو میشوید: آیا هر عامل باید تنها وظیفهای مشخص و محدود را اجرا کند، یا مدیریت کامل یک حوزه را بر عهده بگیرد؟ این تفاوت در نگاه نخست چندان بزرگ به نظر نمیرسد، اما ساختار رفتاری کل سامانه را تعیین میکند. در ادامه، دو سوی این طیف را بررسی میکنیم.
کارگر تکگام
سادهترین نوع عامل، کارگر تکگام است؛ وظیفهای واحد را انجام میدهد، نتیجه را برمیگرداند و کنار میرود. رکوردی را میخواند، جستوجویی انجام میدهد یا مقداری را محاسبه میکند. این کارگر هیچ دادهای را در طول زمان حفظ نمیکند و نیازی ندارد بداند پیش از او چه گذشته یا در گام بعدی چه رخ خواهد داد. ورودی را میگیرد، خروجی را تحویل میدهد و تمام. این الگو برای کارهای مستقل و بیحالت بسیار مناسب است.
متخصص صاحب حوزه
اما برخی وظایف فراتر از تکاقدامی ساده هستند؛ آنها مأموریتی چندمرحلهای یا یک جریان کاری را پیش میبرند که به تعاملهای متعددی نیاز دارد. در این شرایط به نوع دیگری از عامل نیاز داریم: عاملی که مالکیت کامل یک حوزه را در دست میگیرد، وضعیت آن را در طول تعاملات حفظ میکند، خودش پایانیافتن جریان را تشخیص میدهد و انتقال میان مراحل را مدیریت میکند. چنین عاملی دیگر صرفاً مجری سادهی دستورات نیست، بلکه یک متخصص است.
برای درک بهتر، میتوان این تمثیل را به کار برد: کارگر تکگام مانند تکنسینی است که به او میگویید «این آزمایش را انجام بده» و نتیجه را از او تحویل میگیرید. اما متخصص مانند پزشکی است که پروندهی بیمار را در دست دارد؛ میداند پیش از این چه مراحلی طی شده، گام بعدی را تعیین میکند و مسئولیت کل روند را بر عهده دارد.
تفاوت این دو الگو در عمل چیست؟
تفاوت اساسی در مالکیت وضعیت و منطق برنامه است. کارگر تکگام فقط محدودهی وظیفهی خود را میبیند و به زمینهی گذشته یا آینده کاری ندارد. در مقابل، متخصص مالک چرخهی کامل یک جریان کاری است؛ وضعیت قبلی را میخواند، بر اساس قوانین آن حوزه گام بعدی را مشخص میکند، وضعیت را بهروز نگه میدارد و خودش پایان جریان را تشخیص میدهد. هیچ هماهنگکنندهی بیرونی به او دیکته نمیکند که در هر مرحله چه کند؛ این آگاهی و منطق در خود متخصص نهفته است.
این تمرکز، مزیت پنهان دیگری نیز به همراه دارد: از آنجا که متخصص فقط روی منطق حوزهی تخصصی خود متمرکز است، نیازی به دانستن موقعیت دیگر عاملها، ساختار کلی مسیریابی یا وضعیت کل سامانه ندارد. سامانه وظیفهی هماهنگی و ترتیب مراحل را بر عهده میگیرد و متخصص روی کار خود تمرکز میکند. این تفکیک وظایف، هم عاملها را سادهتر نگه میدارد و هم به پایداری بیشتر سامانه میانجامد.
چه زمانی از کدام الگو استفاده کنیم؟
انتخاب میان این دو الگو به ماهیت کار بستگی دارد. اگر کاری مستقل و بیحالت باشد (یک اقدام و یک نتیجه)، استفاده از کارگر تکگام سادهتر و کارآمدتر است؛ در این حالت، تحمیل وضعیت و چرخهی حیات تنها به پیچیدگیهای بیمورد میافزاید. اما اگر انجام کاری مستلزم چندین تعامل پیاپی است و تصمیمگیری در هر گام به مراحل قبلی بستگی دارد، باید به سراغ متخصصی بروید که هدایت جریان را به دست گیرد.
اشتباه رایج این است که همهچیز را با کارگرهای تکگام طراحی کنیم و سپس بکوشیم منطق هدایت جریان را بهزور در لایهی هماهنگکننده جای دهیم؛ یعنی دقیقاً جایی که به آن تعلق ندارد. وقتی حوزهای دارای جریان کاری مشخص است، بگذارید متخصص همان حوزه مدیریت آن را بر عهده بگیرد. تفاوت میان سامانهای پویا که بهراحتی توسعه مییابد با سامانهای که با افزودن هر قابلیت جدید شکنندهتر میشود، در همین نکته نهفته است.