34-წუთიანი სამუშაო სესია იმ დიაგრამებზე, რომლებიც ყველა ინჟინერმა უნდა იცნობდეს და დახატოს — C4 არქიტექტურისთვის, UML sequence ნაკადებისთვის, BPMN პროცესებისთვის, ERD მონაცემებისთვის — და ინსტრუმენტები, რომლებიც მათ სიმართლეს უნარჩუნებს.
წაიკითხეთ სამი აბზაცი იმაზე, როგორ გადის შეკვეთა ხუთ სერვისში — და ხუთ სხვადასხვა წარმოდგენას ააგებთ. აჩვენეთ ერთი დიაგრამა და მთელი ოთახი უცებ ერთსა და იმავე რამეზე კამათობს. დიაგრამა საერთო და იაფი ადგილია, სადაც ხმამაღლა იფიქრებთ, სანამ ერთ სტრიქონ კოდს დაწერთ.
სისტემის ერთადერთი „სწორი“ დიაგრამა არ არსებობს — არსებობს მხოლოდ სწორი დიაგრამა ამ აუდიტორიისა და ამ კითხვისთვის. ერთი და იგივე გადახდის სისტემა ოთხი სხვადასხვა სურათია იმის მიხედვით, ვინ ზის ოთახში.
ერთი სისტემა, ოთხი აუდიტორია — ოთხი დიაგრამა ოთხ მასშტაბზე.
დიაგრამაზე კამათი კოდზე კამათზე იაფია. უთანხმოება წუთებში ამოტივტივდება და არა მომდევნო სპრინტის pull request-ში.
კარგი კონტექსტის დიაგრამა ახალ თანამშრომელს ერთ კვირას უზოგავს, რომელსაც კოდის კითხვაში დახარჯავდა, რომ გაეგო რა რასთან საუბრობს.
დიზაინის დახატვა რთულ კითხვებს ადრევე სვამს — სად ცხოვრობს მონაცემები, ვინ ვის იძახებს, რა ხდება შეცდომისას.
არქიტექტურის დიაგრამების უმეტესობა ერთნაირად ვარდება: ერთი ტილო ცდილობს ერთდროულად აჩვენოს მომხმარებლები, სერვისები, კლასები და რიგები — და ვერავინ კითხულობს მას. C4 ამას ასწორებს ოთხი ფიქსირებული მასშტაბის დონით, როგორც Google Maps პროგრამული უზრუნველყოფისთვის — ქვეყანა, ქალაქი, ქუჩა, შენობა.
კონტეინერი C4-ში არ ნიშნავს Docker-ს — ის ნიშნავს ცალკე გასაშვებ ან დასადეპლოი რამეს: ვებ აპლიკაციას, API-ს, მონაცემთა ბაზას, მობილურ აპლიკაციას. აი ორი დონე, რომელსაც ყველაზე ხშირად დახატავთ:
მთელი სისტემა ერთ ბლოკად — ვინ იყენებს, რაზეა დამოკიდებული. არატექნიკური დაინტერესებული მხარეებისთვის.
ახადეთ სახურავი: დასადეპლოი ნაწილები და როგორ ესაუბრებიან ერთმანეთს. გუნდში ახლად შემოსული ინჟინრებისთვის.
Context ან Container დიაგრამა აჩვენებს სტრუქტურას — რა არსებობს. Sequence დიაგრამა აჩვენებს ქცევას — შეტყობინებების ზუსტ თანმიმდევრობას, როცა ერთი კონკრეტული რამ ხდება, მაგალითად მომხმარებელი სისტემაში შედის. ეს საუკეთესო დიაგრამაა API გამოძახების ან რამდენიმე სერვისზე გამავალი ნაკადის ასახსნელად.
მთლიანი ისრები გამოძახებებია (მიდის მარჯვნივ); წყვეტილი ისრები — დაბრუნებული პასუხები. დრო ქვემოთ მიედინება.
ბლოკი ზემოთ — ადამიანი, სერვისი, მონაცემთა ბაზა. თითოეულს ეკუთვნის ქვემოთ არსებული სასიცოცხლო ხაზი.
წყვეტილი ვერტიკალური ხაზი. ხაზზე უფრო ქვემოთ ყოფნა ნიშნავს „უფრო გვიან დროში“.
ჰორიზონტალური ისარი. მთლიანი — სინქრონული გამოძახებისთვის, წყვეტილი — დაბრუნებული პასუხისთვის.
თხელი ზოლი სასიცოცხლო ხაზზე, რომელიც აჩვენებს, რომ მონაწილე ამ გამოძახებაზე მუშაობს.
შემოიფარგლეთ ერთი სცენარით. Sequence დიაგრამა თავის ფასს მაშინ ამართლებს, როცა ერთი ნაკადის წარმატებულ გზას აჩვენებს, ან ერთ შეცდომის შემთხვევას — და არა ყოველ განშტოებას. თუ ათეულობით ციკლსა და პირობას ამატებთ, სინამდვილეში ფლოუჩარტი ან BPMN დიაგრამა გჭირდებათ.
ზოგი ნაკადი იმაზე კი არაა, როგორ იძახებენ სერვისები ერთმანეთს — ის ბიზნეს პროცესზეა: შემოდის მოთხოვნა, ვიღაც განიხილავს მას, გადაწყვეტილება ტოტავს გზას, სამუშაო სრულდება, პროცესი მთავრდება. BPMN სწორედ ამის დასახატი სტანდარტია, რომ ინჟინრებმა, ანალიტიკოსებმა და მენეჯერებმა ერთი და იგივე სურათი წაიკითხონ.
წვდომის მოთხოვნის პროცესი: დაწყების მოვლენა, დავალება, ექსკლუზიური (ან/ან) გეითვეი, ორი შედეგი და დასრულების მოვლენა.
თხელი წრე იწყებს პროცესს; სქელი წრე ასრულებს მას. მოვლენები ნაკადის შუაშიც შეიძლება მოხდეს (ტაიმერი, შემოსული შეტყობინება).
ერთი ნაბიჯი, რომელსაც ადამიანი ან სისტემა ასრულებს — „მოთხოვნის გაგზავნა“, „წვდომის მიცემა“. პროცესის ზმნები.
ექსკლუზიური გეითვეი (×) ზუსტად ერთ ტოტს ირჩევს; პარალელური (+) ტოტებს ერთდროულად უშვებს. ეს გადაწყვეტილებებია.
მთლიანი ისარი თანმიმდევრობაა — რა ხდება შემდეგ. ზოლები (აქ ნაჩვენები არაა) დავალებებს მფლობელის მიხედვით აჯგუფებს.
Sequence დიაგრამა თუ BPMN? Sequence დიაგრამას მიმართეთ, როცა აუდიტორია ინჟინრებია და კითხვაა „რა რას იძახებს და რა თანმიმდევრობით“. BPMN-ს მიმართეთ, როცა აუდიტორიაში ბიზნესიცაა და კითხვაა „რა ნაბიჯები და გადაწყვეტილებებია ამ პროცესში“.
სანამ პირველი ცხრილი გაჩნდება, არსებისა და კავშირების დიაგრამა საშუალებას გაძლევთ შეთანხმდეთ, რა საგნებს ინახავთ, რა ფაქტებს იცავთ თითოეულზე და როგორ უკავშირდებიან ისინი ერთმანეთს. სწორად დაალაგეთ კავშირები და კარდინალობა ქაღალდზე და თავიდან აიცილებთ ყველაზე ძვირ შეცდომას — სქემას, რომელიც დატვირთვის ქვეშ უნდა მიგრირდეს.
ჩანგლისებრი „ყვავის ფეხი“ ნიშნავს „ბევრს“; ერთი ხაზი — „ერთს“.
ყველაზე გავრცელებული შემთხვევა. ერთი კლიენტი აფორმებს ბევრ შეკვეთას; თითოეული შეკვეთა ზუსტად ერთ კლიენტს ეკუთვნის (უცხო გასაღები „ბევრის“ მხარეს).
შეკვეთა შეიცავს ბევრ პროდუქტს; პროდუქტი ბევრ შეკვეთაში ჩნდება. რეალურ სქემაში ამას შუაში დამაკავშირებელი ცხრილი სჭირდება.
პირველადი გასაღები ცალსახად განსაზღვრავს სტრიქონს; უცხო გასაღები სხვა ცხრილის პირველად გასაღებზე მიუთითებს — ეს ის მავთულია, რომელზეც კავშირი დგას.
ყვავის ფეხის ნოტაცია ის დიალექტია, რომელსაც ყველაზე ხშირად შეხვდებით: სამკბილა „ფეხი“ აღნიშნავს ბევრის მხარეს, პატარა ხაზი — ერთის მხარეს, დამატებითი წრე კი ნიშნავს, რომ კავშირი არასავალდებულოა (ნული დაშვებულია). ის მარცხნიდან მარჯვნივ წინადადებასავით იკითხება — „ერთი კლიენტი აფორმებს ნულ ან ბევრ შეკვეთას“.
ინსტრუმენტების მთავარი არჩევანი ის კი არაა, რომელი აპლიკაცია — არამედ ის, თქვენი დიაგრამები ტექსტია, რომელსაც რეპოზიტორიაში აკომიტებთ თუ ხელით დახატული სურათებია. თითოეული სხვადასხვა ამოცანაში იგებს; მომწიფებული გუნდები ორივეს შეგნებულად იყენებენ.
დადებითი — პირდაპირ აისახება GitHub-ში, GitLab-სა და Markdown-ში; ინსტალაცია არ სჭირდება.
უარყოფითი — ავტომატური განლაგება დიდ, მჭიდრო დიაგრამებზე უხერხული ხდება.
დადებითი — UML-ის ყველაზე ფართო დაფარვა და ზუსტი კონტროლი; ბრძოლაში გამოცდილი.
უარყოფითი — სჭირდება რენდერის სერვერი/Java; სინტაქსი უფრო რთული სასწავლია.
დადებითი — სწრაფი, ხელით ნახატის შეგრძნებით; იდეალურია ცოცხალი ბრეინშტორმისთვის.
უარყოფითი — თავისუფალი ფორმა, ამიტომ რეალობას სცილდება და git-ში ვერსირებული არაა.
დადებითი — უფასო, ფიგურების უზარმაზარი ბიბლიოთეკები, ინახება ფაილად, რომელიც შეგიძლიათ დააკომიტოთ.
უარყოფითი — ხელით განლაგება მოვლას მოითხოვს; დიფები წაუკითხავი XML-ია.
დადებითი — გამართული ერთობლივი მუშაობა, შაბლონები, შესანიშნავია ხელმძღვანელობისთვის განკუთვნილი პრეზენტაციებისთვის.
უარყოფითი — ფასიანი SaaS; რეპოზიტორიის გარეთ ცხოვრობს, ამიტომ ჩუმად ძველდება.
დიაგრამა, რომელიც ჭეშმარიტი უნდა დარჩეს → დიაგრამა როგორც კოდი git-ში. ერთჯერადი ბრეინშტორმი → Excalidraw. გაპრიალებული გადაცემა → Lucidchart ან draw.io.
ამ პრეზენტაციის ყოველი დიაგრამა სხვადასხვა აუდიტორიისთვის სხვადასხვა კითხვას პასუხობს. ოსტატობა ამ ორის შეხამებაშია — და შემდეგ იმდენის დახატვაში, რამდენიც ამ კითხვას სჭირდება.
დაინტერესებული მხარეებისა და ახალი ინჟინრებისთვის — ბლოკები და მათ შორის სადენები.
ინჟინრებისთვის, რომლებიც სერვისებზე გამავალ ერთ ნაკადს დროში აანალიზებენ ან აპროექტებენ.
ბიზნესისა და ინჟინერიისთვის, რომლებიც პროცესს გადაწყვეტილებებითა და შედეგებით ათვალიერებენ.
ყველასთვის, ვინც სქემას ეხება — არსები, ატრიბუტები და კარდინალობა.
ხუთი სწრაფი კითხვა C4-ზე, sequence დიაგრამებზე, BPMN-ზე, ERD-ებზე და ინსტრუმენტებზე — მყისიერი უკუკავშირი, შესვლის გარეშე.
ნავიგაცია ← → ღილაკებით ან სქროლით · უკან ბიბლიოთეკაში