Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- "Haydi Kodlayalım" video eğitim kanalından bir eğitim videosu olup, eğitmen mikrohizmet projesi yapısını ve dependency yönetimini anlatmaktadır.
- Video, mikrohizmet projesinin yapısını, Spring Boot ve Spring Cloud projelerinde parent proje yapısının önemini ve dependency yönetimini detaylı şekilde ele almaktadır. Eğitmen, ana proje (microservice app), service parent ve account servisi gibi alt projelerin nasıl yapılandırıldığını açıklamakta ve Maven görünümünde Spring Boot projesinin nasıl çalıştığını göstermektedir.
- Videoda ayrıca Spring Cloud versiyonlarının London metro haritası üzerinden nasıl adlandırıldığı, her mikroservisin kendi bağımlılıklarını yönetmesi gerektiği ve dependency'lerin sadece bir jar dosyası değil birden fazla jar dosyasına denk gelebileceği gibi önemli bilgiler de paylaşılmaktadır. Video, bir sonraki bölümde config server bağımlılığından kaynaklanan hata mesajının çözümüne değineceğini belirterek sona ermektedir.
- 00:06Proje Yapısı ve Microservice Yaklaşımı
- Önceki bölümde account servisi Cassandra veritabanıyla oluşturulmuş ve listeleme işlemi hazır hale getirilmiştir.
- Proje, birçok servis ve yapı içereceği için bir meyvenin projesi çatısı altında toplanmıştır.
- Proje, GitHub'dan manuel olarak veya son halini çekerek kullanılabilir.
- 00:59Ana Proje ve Alt Modüller
- Tüm alt projeleri bir arada tutan en tepede bir ana proje bulunmaktadır.
- Ana proje altında microservice app, plugin, servis parent ve account servisi gibi alt modüller yer almaktadır.
- Service parent, tüm alt modülleri bir arada tutan ve Spring Boot ve Spring Cloud için gerekli olan bir proje olarak tasarlanmıştır.
- 03:15Spring Boot ve Spring Cloud Versiyonları
- Spring Boot ve Spring Cloud versiyonları, Spring Cloud'un kendi sitesinden alınan etiketlerle belirlenmiştir.
- Her etiket, Spring'in bir majör versiyonuna denk gelmektedir (örneğin, Dolston 1.5'e, Hoxton 2.20'a denk gelmektedir).
- Spring Cloud'un main dependency'si, Spring'in central repostoresinde bulunabilir ve RC-1 gibi versiyonlar kullanılabilir.
- 09:08Service Parent Projesinin Amacı
- Service parent projesi, kod olarak ortaklaştırmamak ancak dependency bakımından ortaklaştırmak için oluşturulmuştur.
- Her proje bir başka mikro servisin ile aynı ortak kodu kullanmamalıdır, bu best practice'dir.
- Service parent, tüm servislerde ihtiyaç duyulacak ortak bileşenlerin dependencelerini içerir ve bu sayede dependency güncellemeleri tek noktadan yapılabilir.
- 11:17Proje Hiyerarşisi ve Bağımlılıklar
- Microservice app, service parent'in alt projesidir ve account servisi hem microservice app projesinin hem de spring boot starter'ın alt projesidir.
- Her proje kendine özel jar'ları barındırır, örneğin account servisi Cassandra, Elastic Search ve PostgreSQL ile çalışmaktadır.
- Servis parent'e eklenen config server dependency'si, account servisi için gereksiz hata verebilir.
- 13:55Maven Görünümünde Proje Yapılandırması
- Maven görünümünde Spring Boot 2.2.1 ile çalıştığı görülse de, projede bu versiyonla ilgili doğrudan bir yapılandırma bulunmuyor.
- Maven, projenin parent'ına bakarak Spring Boot 2.2.1'e ulaşıyor.
- İlk projeyi GitHub'tan indirdiğinizde, sadece kök dizindeki pom.xml'i belirtmeniz yeterli olacak, diğer alt projeler otomatik olarak görünecek.
- 15:00Dependency Yapısı
- Servis parent'a beş tane dependency eklenmiş, ancak bu beş dependency beş tane jar anlamına gelmiyor.
- Bir dependency'e referans olan diğer dependency'ler, bir, iki, üç tane jar dosyası ile çalışması gerekiyor.
- Eklenen üç tane dependency, yirmi-yirmibeş tane jar dosyasına denk geliyor olabilir, ancak ortak jar dosyaları nedeniyle bu sayı değişebilir.
- 16:21Projeyi Doğru Yükleme
- Dependency'leri görmüyorsanız, yenile butonuna basarak yeniden yükleme işlemini yapabilirsiniz.
- Account servisin içerisinde hem parent'ın verdiği hem root'un verdiği hem de kendisinin verdiği tüm dependency'leri görmelisiniz.
- Örneğin, data cassandra için data cassandra, spring'in transaction management core bean, spring'in data common'su ve cassandra'nın driver'ı gibi birçok jar ile çalışması gerekir.