Ben küçük bir geliştiriciyim (yaklaşık 3 yıl) ve iş yerimde yeni bir sistem inşa etme sürecindeyiz. Lider geliştiricim asıl mimar olacak, ancak sistemi kendim (paralel olarak) yapmayı denemem için bana meydan okudu.
Birkaç beyin fırtınası fikri yinelemesi ve mimarlık önerileri olarak gördüklerimi önerme sürecinde, benim önerim bana yaptığım işlerin çoğunun "tasarlama" olduğu ve "mimarlık" olmadığı yönünde bir geribildirim verdi.
Farklılığı mimarlığın uygulama-agnostik olarak tanımlarken, bir tasarım bir uygulamanın açıklamasıdır. Tasarımcı şapkamı çıkarmam ve mimar şapkamı giymem gerektiğini söyledi. Bana bunun nasıl yapılacağı konusunda bir tavsiyede bulundu, ama ben de size sormak isterim:
Yazılım tasarımcısı modundan nasıl çıkıp mimar gibi düşünmeye nasıl başlayabilirim?
İşte benim öncülüğümde mimarlıkla alakalı olarak görülmeyen bazı "tasarım" örnekleri :
- Sistemimizden kaynakları yüklemek ve boşaltmak için bir algoritma buldum ve liderim algoritmaların kategorik olarak mimarlık olmadığını söyledi.
- Sistemin yükselmesi gereken ve onları hangi sırayla yükseltmesi gerektiği konusunda bir takım olaylar buldum, ama bu da onu mimarlık olarak kesti.
Ayrıntılara kapılıyor gibi görünüyorum ve yeterince geri adım atmıyorum. Bir mimari seviyede olan bir şey bulsam bile, sık sık çeşitli uygulamalar deneyerek ve detaylarda dolaşıp daha sonra genelleme ve soyutlama yaparak vardım. Bunu liderime anlattığımda yanlış bir yaklaşım benim dediğimi söyledi: "aşağıdan yukarıya" değil, "aşağıdan yukarıya" düşünmem gerekiyordu.
İşte proje hakkında daha detaylı bilgi :
- Mimarladığımız proje bir web uygulamasıdır.
- 10-100 bin civarında kod satırı tahmin ediyorum.
- Biz bir başlangıçız. Mühendislik ekibimiz yaklaşık 3-5 kişidir.
- Uygulamamızı karşılaştırabileceğim en yakın şey hafif bir CMS. Benzer bir karmaşıklığa sahiptir ve büyük ölçüde bileşen yükleme ve boşaltma, düzen yönetimi ve eklenti stili modülleriyle ilgilenir.
- Uygulama ajax-y. Kullanıcı istemciyi bir kez indirir ve ardından sunucudan ihtiyaç duyduğu gibi veri ister.
- MVC modelini kullanacağız.
- Uygulama kimlik doğrulamasına sahip olacak.
- Eski tarayıcı desteğinden çok fazla endişe duymadık (vay!), Bu yüzden orada olan ve ortaya çıkacak olan en son ve en büyükleri kullanmak istiyoruz. (HTML5, CSS3, WebGL?, Medya Kaynağı Uzantıları ve daha fazlası!)
İşte projenin bazı amaçları :
- Uygulamanın ölçeklendirilmesi gerekiyor. Yakın vadede, kullanıcılarımız yüzlerce ila binlerce arasında olacak, ancak on binlerce ila milyonlarca ve daha ötesini planlıyoruz.
- Uygulamanın sonsuza kadar süreceğini umuyoruz. Bu geçici bir çözüm değil. (Aslında zaten geçici bir çözümümüz var ve mimarlık yaptığımız şey, sahip olduğumuz şeyin uzun vadeli yerine geçmesidir).
- Hassas kişisel bilgilerle temas halinde olabileceğinden, başvuru güvenli olmalıdır.
- Uygulamanın kararlı olması gerekiyor. (İdeal olarak, gmail düzeyinde istikrarlı olur, ancak Mars rover'ın aşağısında olması gerekmez.)