@Programmer, programlama yönteminizin modası geçmiş, bulut geliştirme çağı geliyor

Yazar | Fengda Huang, CSDN blog uzmanı Phodal

Editör | Tang Xiaoyin

Baş resmi | yazar, CSDN'yi kullanmak için çizer ve yetkilendirir

Bu makaleyi anlamayabileceğinizi biliyorum ama paylaşmaya değer.Gelecek orada.

Gördüğünüz gibi, son birkaç yılda hızlı değişiklikler oldu (bu cümle, kötü söyledim). Örneğin:

  • Daha düşük programlama eşiği. Çok sayıda düşük programlama yeteneği seviyesi bu sektöre girebilir;

  • Mükemmel altyapı. Üretime geçiş işlemini tamamlamak için yalnızca git push'u yürütmeniz gerekir (proje üzerinde dört yıl önce uygulamamıza rağmen);

  • Bulut ana bilgisayar geliştirme. Uzaktan geliştirme makinesi, kod yerel makinede değil;

  • Çok kişili gerçek zamanlı geliştirme ve düzenleme teknolojisi. Birden çok kişinin gerçek zamanlı programlamada işbirliği yapmasına olanak tanıyan Visual Studio Live Share gibi;

  • 5G. Daha hızlı ağ bağlantısı, daha iyi iletişim kalitesi.

  • ...

Şirket patronları, meslektaşları, topluluk patronları vb. İle bir dizi teknik tartışmanın yanı sıra son yıllarda bulut kodu geliştirmenin başlangıcından sonra bazı yeni içgörülerim var. Ben de bu makaleyi aldım.

Daha fazla okumaya olan ilginizi kaybetmeden önce, ilk sonuca varmama izin verin:

Bulut geliştirme, bulutta doğan kapalı döngü + kodlu bir yazılım geliştirme yöntemidir. İşletme personelinin, geliştiricilerin, operasyon personelinin vb. Birbirlerinden izole edilmek yerine aynı bulutta tüm yazılım yaşam döngüsünü (gereksinimler, tasarım, kodlama, yapım, dağıtım ve operasyon) şeffaf bir şekilde tamamlamasına ve işbirliği yapmasına olanak tanır veya İşi tamamlamak için birden fazla yazılıma güvenin.

Dolayısıyla bulut geliştirme bir çözümdür ve çözdüğü sorun şudur: Yazılım daha verimli bir şekilde nasıl geliştirilir?

V0.1.0'ın tanımı gibi, benim tanımım çok doğru olmayabilir, ancak birkaç önemli nokta var:

  • Yazılımları işbirliğine dayalı bir şekilde geliştirin;

  • Yazılım geliştirmenin çevrimiçi kapalı döngüsü;

  • Uygulama yaşam döngüsünün kodlanması ve izlenebilirliği.

Görüyorsunuz, geçmişte birbiri ardına bir çevrimdışı işbirliği sorununu çözdük. Şimdi yeni bir çevrimiçi işbirliği platformu oluşturma zamanı yavaş yavaş olgunlaştı ve bulut geliştirme platformunuzu oluşturmaya hazırlanmanın zamanı geldi.

Piyasada zaten xx'in xx'i gibi bu tür araçlar olduğunu söylemek istediğinizi biliyorum. Ancak bir yandan yanlış bir yöne doğru ilerliyor ve tanıdığınız bir firma 2B'yi daha iyi anlıyor; diğer yandan bir çok fonksiyon içeriyor ama döngüyü kapatmıyor. Tabii ki, işlevi resmi ana sayfadan yeni gördüm ve bu sözde sonucu bir bakışta aldım.

Not: Özetlediğim temel üç unsuru yansıtamadıkları sürece gülün ~. Benim teorime uymuyor, yanlış olmalı, manuel komik, kaçış ~.

Giriş 1: Üç temel unsur

Bu üç öğe, yazılım geliştirmenin öğeleridir ve yalnızca öğelerin derinliklerine inerek gerçek bir bulut platformu haline gelebilirler.

Daha fazla saçma konuşmak istemiyorum, ellerim ağrıyor.

Altyapı gerçekten altyapı ise, onları bulut platformunda vurgulamamalısınız. Bu nedenle altyapı önemli olmasına rağmen temel unsurlardan biri değildir. Modaya uygun bir şirket olarak altyapı zaten genel bir etki alanıdır, eğer yapmadıysanız ...

Mikro mimari

Mikro-mimari, yani modüler bir kombinasyonda büyük ölçekli uygulamaları (ön uç, arka uç, Uygulama vb.) Birlikte inşa etmenin mimari yöntemi. Her mikro uygulama bağımsız olarak geliştirilebilir, dağıtılabilir ve bağımsız olarak çalıştırılabilir. İlgili değiştirme yöntemleri arasında modülerleştirme, alt modül modu, mikro hizmet, Uygulama eklentisi (bağımsız yapı, bağımsız çalışma), mikro ön uç vb. Yer alır.

Mikro-mimari bir kalıptır, sihirli bir mermi değildir , Karmaşık yazılım mimarisini teknik bir şekilde, karmaşık senaryolardaki problemlere uygun, insan beyninin yeterince büyük olmaması problemini çözer.

  • Arka Uç: Hizmet Odaklı Mimari

Beş yıl önce, Martin Fowler ve James Lewis "Microservice Architecture" başlıklı makaleyi yazdılar.Microservices bugün yeni projeler için ana akım mimarilerden biri haline geldi. Son yıllarda "Domain Driven Design" çekiciyle birleşen bir silah haline geldi.

Hizmet odaklı mimarinin bir uygulaması olarak, arkasındaki tasarım ve uygulama modlarında ustalaşmak, bulut geliştirmenin vazgeçilmez ve önemli bir parçasıdır.

  • Arka uç: Hizmet olarak İşlev

İki yıldan daha uzun bir süre önce, Nth e-kitabım "Sunucusuz Mimari Uygulama Geliştirme Kılavuzu" nu GitHub'a yazdım. Son zamanlarda, Sunucusuz nihayet Çin'de popülerlik kazandı. İki yıl önce, Alibaba Cloud ve Tencent Cloud'dan art arda sunucusuz erken aşama deneyimleri aldım (bir MVP olarak, onlarla hala bir ilgim yok), ancak olgunlaşmamışlar ve hatta kendi bulut hizmetlerini arayamıyorlar. Bugün, giderek daha fazla bulut satıcısının Sunucusuz uygulaması nihayet çalışabilir.

Aynı şey, hizmet odaklı mimari BAAS (hizmet olarak Arka uç) veya Sunucusuz için de geçerlidir.Karmaşık sorunları, insanların üstesinden gelebilecekleri ölçüde daha da parçalarına ayırırlar.

  • Uygulama: Uygulama "eklenti" dir

Son yıllarda, Uygulama için geliştiriciler çok sayıda mikro mimari çözümü de araştırdı. Bunlara uygulamalar veya "eklentiler" demeye alışkınım çünkü uygulamalar bir temel görevi görüyor ve çeşitli yetenekler sağlıyor. Şimdilik, görüntülemenin üç yolu var:

  • Uygulama içi web uygulaması.

  • Uygulama eklentisi. Piyasada zaten RePlugin, Atlas, VirtualAPK, DynamicAPK gibi çok sayıda bu tür programlar var.

  • Uygulama uygulaması. Yani, işlevler küçük programlar çalıştırılarak kapsayıcıya alınır, yani bir Web kapsayıcısı gibi uzaktan güncellenebilir ve geliştiricilerin izinlerini etkin bir şekilde kontrol edebilir ve kendi ekolojilerini geliştirebilirler.

İnsanları uygulama indirmeye teşvik etmenin maliyeti her geçen gün artıyor olsa da, uygulama platformlaşması bir trend haline geldi.

Yerel uygulama hala çok önemli bir parça olsa bile, uygulama platformunun çözümü + uygulama eklenti modelinin ekolojik yapısı da bulut geliştirmede dikkate alınması gereken önemli bir faktördür.

  • Ön uç: mikro ön uç ve uygulama bileşenleştirme

Bu yıl, mikro ön yüzün popüler olmaya başladığı yıl. Mikro ön uç çerçeveleri birbiri ardına ortaya çıkıyor: SingleSPA, Mooa, qiankun, ngx-planet ve "Ön Uç Mimarisi: Girişten Mikro Ön Uca" gibi kitaplar. Giderek daha fazla şirketin ön uç mimarisinin geleceği hakkında düşünmeye başlamasına ve zengin mikro ön uç ile ilgili altyapıyı iyileştirmesine olanak tanır. Bir anlamda, bu bir bileşenleştirme yoludur, ancak orijinal bileşen yalnızca basit bir UI bileşenidir ve mevcut bileşen, tamamen işlevsel bir uygulamadır. Bir uygulamanın geliştirilmesini tamamlamak için sadece ilgili boruyu tasarlamanız gerekir.

5G'nin gelişiyle, mikro hizmet odaklı ön uç uygulamaların ve Web Bileşeninin boyutu kabul edilebilir hale geldi. İşlev düzenlemesi, bulut geliştirmenin önemli bir bileşeni haline gelecektir - sonuçta, eklenti pazarının devam eden popülaritesi bazı ipuçları verebilir.

Kodlu

Bu bölümün tek cümlelik özeti:

  • Verilen Gelecek

  • Her Şey Kod Olarak,

  • O zaman koruyabilirsin

  • Sonra onu Yeniden Düzenleyebilir veya Yeniden Yazabilirsiniz.

O halde, aşağıdakiler muhtemelen tamamen farklı üç moddur.

  • Kod için tasarım: boşlukları doldurma geliştirme

İlk başta sadece iki modum vardı. Ayın başına kadar şirket içinde ilgili paylaşımları duydum. Üçüncü modu aldım: Büyük kuruluşlar için TypeFlow (https://github.com/notyy/TypeFlow) geliştirme.

Bu yöntem, büyük kuruluşların yazılım geliştirme modeli için oldukça uygundur.Üst düzey mühendisler, temel modeli ve yazılım mimarisini tasarlar, ilgili yöntem adını ve gerekli dönüş sonucunu üretir. Bu mod aslında geçmişte vardı ve geri kalanı sıradan geliştiricilerin ilgili kodu doldurması. Sunucusuz gibi altyapı ile birleştirildiğinde, doğrudan entegre edilebilir ve başlatılabilir.

Yüzeyde, tasarım tarafından üretilen bir koda benziyor, ancak gerçekte tasarım koddur.

  • Çevrimiçi olma talebi: kod programlama yok

Yılın başında "Kodsuz Programlama" yazısını yazdım Bu yazı sayesinde artık hiç kod / düşük kod yapmadım. Bunun uygulanabilir bir geliştirme modeli olduğunu gösteren çok sayıda vaka oldu.

Kodsuz programlamanın özü, alana özgü senaryolarla alana özgü sorunları çözen iş modeli + programlama modelinin soyutlanmasıdır. Bu nedenle, düşük kodlu programlama / kodsuz programlama, yalnızca alana özgü ve basit senaryoların ihtiyaçlarını çözebilir ve sorunların çoğunu çözemez.

Kodsuz programlamanın anlamadığı bir şey, iş ve tasarımı, yani gereksinimleri doğrudan özetlemesi ve gereksinimlerden koda doğrudan erişimi gerçekleştirmesidir.

  • Kodlama: DSL olarak DSL

DSL, her şeyi DSL'e dönüştüren DSL anlamına gelir. DSL'in nasıl tasarlandığına dair bir makale yazdığımı düşünürsek, bunu detaylı olarak tartışmayacağım:

  • Alan isimlerini türetmek

  • Model analizi ve soyutlama

  • Model davranış soyutlaması

  • Anahtar özeti bulun

  • Sahne ikamesi

  • DSL uygulayın

  • Yinelemeli optimizasyon

Bulut platformu önerilerini daha da tamamlamak için kodun kendisi de bir DSL olmalıdır. Gerçek bulut platformunu tamamlamak için gereksinimler, tasarım, kod, yapım, dağıtım ve operasyonun tümü DSL olarak özetlenmelidir.

İşbirlikçi tasarım kültürü

Yazılım geliştirme kolektif bir eylemdir ve yazılım tasarımı da kolektif bir eylemdir. Bu nedenle, iyi bir bulut geliştirme platformu, ortak işbirliğinin genlerini içermelidir.

  • Yazılım geliştirme kültürü

Çevikliği benimsemenin ancak çevik olmamanın bir nedeni de departman duvarıdır. İnternet dışı şirketler için (çoğu İnternet şirketi için de geçerlidir), bir yazılımın geliştirilmesi genellikle birden çok departmanı gerektirir: işletme departmanı, teknik departman, test departmanı, pazarlama departmanı ...

  • İş (alan) odaklı tasarım

Uzun yıllara dayanan okuma deneyimime dayanarak, insanların başarısız yazılımları benimseme ve geliştirmelerinin nedenleri iki noktadan başka bir şey değildir: "işbirliğine dayalı tasarım eksikliği" ve "bilgi aktarımı". Bu arada, teknik seviye iyi değil, bu o kadar önemli değil.

Ve "DDD (Etki Alanına Dayalı Tasarım)" ve olay fırtınaları yalnızca yazılım geliştirme kültürünün bir uygulamasıdır. İşbirliğine dayalı tasarım sayesinde, bilgi herkesin ihtiyaçlarını karşılayan uzlaşmacı uygulamalara aktarılabilir.

  • Sunucu servis merkezi ve istemci bileşen merkezi

Bu benim Zhongtai hakkındaki yanlış anlamam olabilir. Zhongtai'ye alışkanlık olarak "alınamaz çöp toplama kutusu" diyorum. Ancak, "altyapı hizmetlerini" ortak bir ortak haline getirerek inanılmaz bir olay yaptı. İşte alay konusu bu.

Zhongtai'nin inşasının daha da iyileştirilmesiyle, büyük miktarda altyapı orijinal çeşitli iş parçalarından bu çöp geri dönüşüm istasyonuna ~~ büyük platforma birleştirilecek.

Bu temel kısım ile bir sonraki adıma geçebiliriz.

Giriş 2: Programlamanın özü

Tamam, saçmalığa devam edeceğim, önce soruyu tekrar cevaplayacağım, daha verimli bir şekilde yazılım nasıl geliştirilir? Öyleyse, öncelikle bu sorunu çözmek için bir çözüm bulmalıyız: Yetersiz insan zekası sorunu nasıl çözülür?

Karmaşık sorunları çözün

Öyleyse, önce karmaşık problemleri çözmek için Cynefin çerçevesini sunalım.

Not: Dafa'yı kopyalayıp yapıştırmak harika, bir süre her zaman harikadır.

  • Basit. Bu alandaki nedensellik açıktır. Yöntem, Algıla-Kategorilere Ayır-Yanıtla. En iyi uygulamaları uygulayabiliriz.

  • Karmaşık, bu alandaki nedensel ilişkinin analiz edilmesi gerekiyor veya diğer bazı araştırma biçimlerine ve / veya mesleki bilginin uygulanmasına ihtiyaç var. Yöntem, Sense-Analyze-Response. Onu iyi uygulayabiliriz Uygulama.

  • Karmaşık: Bu alandaki nedensel ilişki ilerlemeden değil, yalnızca hatırlamayla algılanabilir Yöntem Probe-Sense-Response (Probe-Sense-Response) olup, ortaya çıkan uygulamaları algılayabiliriz (ortaya çıkan uygulama).

  • Kaos (Kaotik), bu alanda sistem düzeyinde nedensellik yoktur Yöntem, Hareket-Duygu-Cevap (Hareket-Duygu-Cevap), yeni uygulamaları keşfedebiliriz (yeni uygulama).

  • Beşinci alan düzensizdir.Bu alanda hangi nedensel ilişkinin olduğu açık değildir Bu durumda insanlar karar vermek için rahat alanlarına döneceklerdir. Cynefin çerçevesinin alt alanları vardır ve basitlik ile kaos arasındaki çizgi felakettir: gurur ve kayıtsızlık başarısızlığa yol açar.

Bu çerçeve ile ilk sonuca vardık. Programlama için temel sorularımız şunlardır: Karmaşık sorunlar nasıl karmaşıklaştırılır? Çünkü basit problemler basittir ve karmaşık problemlerin çözülmesi kolaydır.

Karmaşık sorunlara çözümler

Karmaşık bir problem nedir?

Şirket patronundan üç kelime alıntı yapacak olursak:

  • Sahne çok ve karmaşık;

  • İnsanların yetersiz IQ'su vardır;

  • Dil tek tip değil.

Bu üç sorunun cevabı şu an için bedava değil, ilgilenenler bana danışabilirler - aslında hepsi bu yazıda.

Makaleyi okuduktan sonra geri dönün ve bu konuyu gözden geçirin.

Büyük kuruluşlar için yazılım geliştirme modeli

Yukarıdaki sorunları çözmek için, büyük kuruluşlar için, benimsenen ilk yöntem: sökme.

  • Kıdemli geliştiriciler, tasarım mimarisi;

  • Orta düzey geliştiriciler, inceleme kodu;

  • Sıradan geliştiriciler, geliştirmeyi tamamlar;

  • Acemi geliştiriciler, testler yazın.

Şimdilik bu parçalarda bazı parçalanmalar var. Kod yanıt mimarisi, mimari uygulama kodu. İlgili mimari korumaların eksikliği, kalite erişim kontrolü vb. Ve inceleme gibi işler makine tarafından tamamlanır.

Bulut geliştirme

Eh, burada görmek kolay değil. Çünkü içeriğin geri kalanı artık önemli değil.

Bulut geliştirme nedir?

Bir kez daha, tanıma bakalım:

Bulut geliştirme, bulutta doğan kapalı döngü + kodlu bir yazılım geliştirme yöntemidir. İşletme personelinin, geliştiricilerin, operasyon personelinin vb. Birbirlerinden izole edilmek yerine aynı bulutta tüm yazılım yaşam döngüsünü (gereksinimler, tasarım, kodlama, yapım, dağıtım ve operasyon) şeffaf bir şekilde tamamlamasına ve işbirliği yapmasına olanak tanır veya İşi tamamlamak için birden fazla yazılıma güvenin.

O zamandan beri, bulut ana bilgisayar / uzak ana bilgisayar geliştirme modelinden farklıdır. Çevrimiçi tamamlamak için yalnızca bir tarayıcıya / istemciye / IDE'ye ihtiyaç duyar:

  • Örneklenmiş gereksinimler

  • Mimari, etkileşimli tasarım

  • Kodlama

  • Otomatik entegrasyon ve inşaat

  • Ortam dağıtımı yok

  • Yapay zeka operasyonları

Kızarmış kestanemi kaldır:

  • (Hata Ayıklama) Üretim ortamında günlüğün çıktısını almak için bir console.log veya fmt.Println girin.

  • (Talep doğrudan çevrimiçi olur) Simge Kanban'a yüklendiğinde bir Simge talebini değiştirin. NLP'den sonra, otomatik olarak kod tabanına gönderilir ve üretim ortamına dağıtılır.

  • (Kod oluşturma gereksinimi) Varsayılan yazı tipinin rengi # 000'den # 384452'ye değiştirildiğinde, karşılık gelen gereksinim değişikliği tersine çevrilebilir - ancak bu bir taahhüt mesajıdır ve gereksinim ters olarak oluşturulur.

  • (Tasarım senkronizasyonu) Modele, ön uç ve arka uç modellerinin otomatik güncellemesine karşılık gelen yeni bir alan ekleyin.

  • (Kod oluşturma senkronizasyonu) Yeni dallar, yeni ardışık düzenler, tükendiğinde silin.

  • ...

Şu ilkelere dayanmaktadır:

  • Kodlama prosedürel verilerden daha iyidir;

  • Kendi kendine kapanma döngüsü etkileşimden daha iyidir;

  • Yerleşik ölçümler, görselleştirmeden daha iyidir.

İstediği şey bu kadar basit.Geliştirme için, yalnızca alan modelleme, ayrıntılı tasarım ve boşlukları doldurma geliştirmeye karşılık gelir.

Bulut geliştirme platformu nasıl oluşturulur?

Vade modeli

Tanım açısından bunu beş aşamaya ayırabiliriz:

  • Temel uzaktan programlama yeteneklerine ve otomatik dağıtıma sahip olun. Yani kodun yerel olması gerekmez

  • Yazılım geliştirmenin tüm yaşam döngüsü bulutta tamamlanabilir. Tüm yazılım geliştirme çalışmalarını bulutta tamamlayabilir ve destekleyebilir

  • Bulut geliştirme platformunda bulut geliştirme platformu. (Önyükleme)

  • Kodlama yardımı ile yazılım geliştirmenin her adımı koda dönüştürülür.

  • Tüm geliştirme sürecinin otomatik optimizasyonunu gerçekleştirin. Otomatik mavi-yeşil dağıtım, otomatik seçim şemaları, otomatik optimizasyon gibi.

  • İnsansız programlama. İnsan Bitti

İlk aşama. İnsan denizinin taktikleri ile başarılabilir.

İkinci aşama. Soyut yazılım geliştirme modeline güvenin.

Üçüncü aşama. Kendinizi kanıtlayın, el emeği.

Dördüncü aşama. Daha fazla soyut yazılım geliştirme.

Beşinci aşama. Yapay kısmı soyutlayın ve akıllıca tamamlayın.

Yani, bu sistemin tasarımını tamamlamak yaklaşık N alır. Sonuçta, bulut geliştirme karmaşık bir konudur. Uzun tarih nehrinde kaybolmamızı önlemek için sistemi sürekli olarak söküp mikro mimari, kodlama ve işbirliğine dayalı tasarımın üç temel unsurunu birleştirmemiz gerekiyor.

Bulut geliştirme platformunun temel taşı

Uygulamanın sadece bir detay olduğunu vurgulamama rağmen, uygulama mekanizması hakkında genel bir anlayışa sahip olmak hala gereklidir.

  • Entegre geliştirme ortamı

Kodlama ortamı + tasarım ortamı.

WeChat uygulaması, Alipay uygulaması, çevrimiçi Web IDE, VS Code / Monaco Editor, özel editörler / IDE'ler için neredeyse en iyi seçenek haline geldi. Bu şekilde, JetBrains çok çalışmazsa, geleceğini kaybedebilir, tıpkı o zamanlar Delphi gibi, gül ~.

Bu alandaki teknoloji, sektörde oldukça olgun, sadece bazı eklentiler eklemek değil.

Ancak, sadece bazı işlevleri topluyorlar ve kapalı döngü tasarımlarından yoksunlar:

  • Talep korelasyon tasarımı, korelasyon kodu;

  • Kod görüntüleme tasarımı, ilgili gereksinimler;

  • İlişkili kodu oluşturun, bağlanın ve dağıtın.

Bildiğiniz gibi gönderim bilgisi spesifikasyonu, gereksinimlerle ilişkilendirilebilen bir formdur; bildiğiniz gibi alan modelleme, kodun tasarımla ilişkilendirilmesine izin veren bir formdur.

  • altyapı

Yine de yazının başında altyapının önemli olmadığını söylemiştim. Ancak gerçekten uygulanması gerektiğinde, önemini vurgulamalıyız. İhtiyacımız olan şeyler:

  • Mikro mimari desteği

  • Dağıtım ve derleme desteği

  • Otomatik konfigürasyon yönetimi

  • ...

Ve onu çevreleyen şey, çeşitli modellerin iyileştirilmesidir.

  • Model ayrıntılandırma

Hangi sektörde olursanız olun, en değerli şeyler ilkeler ve modellerdir. İlkeler ve kalıplar yeteneklerini hızlı bir şekilde geliştirmek için kullanılır, başka bir deyişle, yeni başlayanların büyük bir inek gibi çalışmasına izin vermek için kullanılır - bu kalıp kötüye kullanılmış olsa bile. ve bu yüzden:

  • Desen kitaplığı

  • Geliştirme süreci modeli

  • Kullanıcı deneyimi tasarım modeli

  • ...

Bunlar çekirdek, soyutlama, çıkarma ve modellemedir.

  • Tam süreç kapalı döngü

Tahmin edebileceğiniz gibi, böyle bir platform kurmanın zorluğu uygulamada değil tasarımdadır. Hangi araçları kullandığınızı değil, yalnızca mevcut aşamadaki bilgilerin bir sonraki aşamaya geçmesini sağlamanız gerekir.

Bir sonraki aşamaya bağlanabildikleri sürece Jira, Trello, Mingle veya Git + DSL tabanlı yöntemleri kullanabilirsiniz. Adım adım bilgi tasarım, kod, yapım, dağıtım ve operasyon ile ilişkilendirilir ve ardından operasyon talebe yansıtılır, ardından tasarım tamamlanabilir.

Yani?

Prototipleme ve temel faktörler

Modelin bir demontajı olarak, tüm sistemin adım adım gerçekleştirilmesini kolaylaştırmak için basit bir sınıflandırma yaptım:

talep

Aslında, Hıyar gibi üç aşamalı bir Given-When-Then tasarımı yeterlidir. Bu yüzden hikaye aracımda ek bilgi genişletme olarak ek açıklamalar kullandım. Cucumber tarafından kullanılan zaten zengin DSL'ler var:

# id: OGr9CObWR # startDate: 2019-11-21T23: 44: 27Z # endDate: 2019-11-21T23: 44: 27Z # öncelik: # durum: # yazar: # title: yürütülebilir bin dosyası ekleyin # dil: zh-CN @matematik İşlev: yürütülebilir bin dosyası ekle Sahneler: Varsayım: ne zaman: ve: Sonra:

Bu tasarımla bu tasarımı bir sonraki tasarımımıza entegre edebiliriz.

tasarım

Aslında, UML'nin kendisi de iyi bir prototiptir.Yalnızca bunun bir kısmını UML'ye dönüştürmek için bir DSL oluşturmanız ve ardından süreç tasarımını elde etmek için UI üzerinde DSL ile birleştirmeniz gerekir:

akış girişi { Ana Sayfayı Gör "Giriş" YAPIN. REACT Success: "Login Success" 'i GÖSTERİN. ANIMATE ile toast (sıçrama) REACT Failure: "Login Failure" GÖSTERİN. "Oturum Açma Hatası" bölümüne bakın. "ForgotPassword" YAPIN. REACT: GOTO ForgotPasswordPage ForgotPasswordPage'i GÖR "ŞİFRE SIFIRLA" YAPIN. Buton YANIT: GÖSTER "Lütfen E-postayı Kontrol Edin" .Mesaj }

Son zamanlarda, kod oluşturma tasarımı için https://github.com/phodal/design ile birlikte ilgili bir mimari tasarım platformu üzerinde çalışıyoruz, tasarım koda dönüştürüldü.

Kod

Kod oluşturma yeni bir şey değil, çok sayıda etkinlik yapan birçok insan var. Bir DSL yazmak, bu DSL'i farklı programlama dilleri oluşturmak için DSL'yi tanımlamak için bir programlama diliyle birleştirerek kullanmak, son zamanlarda yaptığım şeylerden biri bu. Karmaşık değil, sadece külfetli.

Bu adım için iki DSL tasarlamak için çok zaman harcadım, bunlardan biri üretici dil DSL, diğeri bağımsız programlama DSL.

Aynı zamanda, kod için, kabul kriterlerine ve uygunluk işlevlerine odaklanıyoruz.

Kabul şartları

  • Oluşturulan kod tasarımı, kod yanıt tasarımı

  • DSL tarafından oluşturulan kod

Fitness fonksiyonu

  • Yazılım kalitesi eşiği

  • Otomasyon mimarisi koruması

  • Otomatik test oluşturma (geri sarma)

  • Sistem evrim tasarımı

Bunun yardımıyla geçmişi ve sonrakini birbirine bağlayabiliriz.

İnşaat

Sürekli entegrasyon için manuel olarak yapılandırma ihtiyacı kötü bir şeydir. Bu nedenle, Jenkins boru hattı yapımını soyutlamak için Kod olarak Pipeline'ı kullandık. Ancak, sorunu gerçekten çözmez çünkü gerçek yazılım geliştirme çok karmaşıktır. Bir proje için çok fazla şubesi ve farklı yapıları vardır. Bu nedenle, gerçek anlamda sürekli inşaat, Boru Hattı gibi Boru Hattı gibi yöntemleri benimsemelidir.

dağıtmak

Aslında DevOps teknolojisi, ilgili adımları uygulayabilecek kadar olgunlaşmıştır:

  • Dağıtım otomasyonu

  • Dağıtım kodu

  • Gönderin ve çevrimiçi olun

  • Dağıtım özerkliği

Kod kalite kontrolü ve otomatik test, dağıtımın olgunluğunu belirler.

Operasyon

Bu aşamada pek iyi değilim, sınırlı tecrübeme dayanarak mevcut araçlar yeterli. Yapılması gereken tek şey veri toplamak, kalıpları soyutlamak, DSL oluşturmak ve bunları birbirine bağlamaktır.

  • Operasyonel görselleştirme

  • Operasyonel merkezileştirme

  • Kod işlemi

  • Operasyonel talep

Talep > Kod- > Operasyon, operasyon geri bildirim ihtiyaçları.

Bulut geliştirme platformu olgunluk modeli

Peki, sadece başlığa bakın.

  • Seviye 1: İzlenebilir, elektronik

  • Seviye 2: Tam süreç kapalı döngü

  • Seviye 3: Bulut platformunda bulut platformu

  • 4. Seviye: Kodlama Bulut Platformu

  • Seviye 5: Otomatik optimizasyon süreci

  • Seviye 6: İnsan bitti

sonuç olarak

Son olarak bu resme dönelim:

Bu çekirdek.

Oh, evet, bir platform inşa etmek zor bir iş.

Yazar hakkında: Huang Fengda (Phodal), ThoughtWorks Kıdemli Danışmanı, CSDN blog uzmanı. Uzun zamandır GitHub ve CSDN'de aktif olarak, Nesnelerin İnterneti ve ön uç alanlarına odaklandı. "Nesnelerin İnternetini Tasarlamak Kendin Yap" ve "Büyüme: Tam Yığın Büyüme Mühendisi Kılavuzu" dahil olmak üzere altı e-kitap yayınlandı ve "Nesnelerin İnterneti Pratik Kılavuzu" na çevrildi

Zhu Guangquan ve Li Jiaqi'nin canlı yayını düştü, 120 milyon kişi çevrimiçiydi, vb.

"Anti-salgın" yeni taktikler: DSÖ, IBM, Oracle ve Microsoft ile birlikte bir açık veri blok zinciri projesi oluşturdu!

Hızlı bir şekilde bir diyalog robotu oluşturmak için bu numarayı kullanın!

Bunun çağdaş ineklerin [teknik kanatları] olduğu söyleniyor ...

iPhone 12 serisi amiral gemilerinin toplu olarak piyasaya sürülmesi bekleniyor; ABD, China Telecomun Amerika Birleşik Devletlerindeki işletme lisansını iptal etmekle tehdit ediyor, Dışişleri Bakanlığı sözcüsü yanıt verdi; VS Codeun yeni sürümü yayınlandı | Geek Headlines

Bugünün refahı: yorum alanı seçildi, çevrimiçi 299 yuan değerinde "2020 AI Geliştiricileri Konferansı" nı alabilirsiniz Bir canlı bilet . Parmaklarınızı hareket ettirin ve söylemek istediklerinizi yazın.

Bulut geliştirme hakkında ne düşünüyorsunuz? Gel bir bak!

Çin'de bir ilk olan Tencent Cloud Cloud, "Aile Kovası" nı geliştirdi
önceki
Ali Dharma Akademisi Aydınlatılıyor! P10 patronu size AIoT akıllı sesli etkileşim teknolojisinin nasıl oluşturulacağını öğretir
Sonraki
IntelliJ IDEA 2020.1, 15 ana özellik ve resmi Çin desteği ile resmi olarak yayınlandı! | Güç Projesi
Facebook mülakat sorularının tam analizi
onaylamak! Python'u bu şekilde öğrenmek, 10 cadde akranını ortadan kaldırabilir
Hızlı bir şekilde bir diyalog robotu oluşturmak için bu numarayı kullanın
Yeni "anti-salgın" taktikler: DSÖ, IBM, Oracle ve Microsoft ile birlikte bir açık veri blok zinciri projesi oluşturur
Livermore, spekülasyon kralı: Borsada her zaman bir servet kazanabilecek tek bir tür kişi vardır. Bu gerçekten basit, tekrarlanan para kazanımıdır.
Buffy'nin özellikleri Çin borsasını yıkıyor: Bu aşamada 100.000 PetroChina satın alır ve yükseliş ve düşüşü görmezden gelirseniz, bundan 10 yıl sonra nasıl görünecek? Bir yatırımcı olarak ne düşünüyo
Pekin Üniversitesi Finans Profesörü bir kez daha konuştu: Hisse senetlerinde sıkışıp kalmaktan mı korkuyorsunuz? "500'e 5 sent düşüp 500'e 5 sent yükseltir" diyebilirsiniz, borsa defterinde hiç bahse
Çin borsası: Şangay borsa endeksi 2.800 puanın altına düştü. "Bekleyip görelim" mi yoksa "tam avantaj elde etme fırsatını mı değerlendirelim"? Hissedarların baharı burada
Çin borsası: Şangay borsa endeksi 2700'den 2900 puana dalgalanıyor, "U şeklindeki dipten" çıkması mı bekleniyor?
Buffett'in PetroChina satın alma deneyimi size şunu söylüyor: PetroChina 48 yuan'dan yaklaşık 4,6 yuan'a düştükten sonra "iniş ve çıkışları görmezden gelmeye ve düştükçe daha fazla satın almaya" deva
Çinin "para toplama çağı" yaklaşıyor: Borç içinde olduğunuzda ve akrabalarınız sizi ihmal ettiğinde, "Buffett tarzı" bileşik faiz düşüncesini denemenizi öneririm
To Top