Yazılım Terimleri – 03

Evet arkadaşlar seri devam ediyor.

Bildiğiniz gibi bu seri de kendimce yaptığım araştırmalar,  okuduğum yazılar içerisinde gördüğüm duyduğum terimleri kısaca ve basitçe anlatmaya çalışıyorum. Bundaki amacım en azından bu terimler hakkında bir fikir vererek detaylı araştırmak isteyenler için yönlendirme sağlamak.

Daha fazla girizgahı uzatmadan başlayalım artık. Hadi buyrun …

Client / Server : Bu yazıyı okuyorsanız muhtemelen çoğunuz zaten bu tanımlamayı biliyorsunuzdur. Fakat yine de hatırlamakta fayda var. En kabaca tabirle Client, bir isteği/requesti yapan, server ise bu isteği karşılayan taraf olarak tanımlanabilir.

http://yazilimyazari.com/server-ve-client/

 

IoC( Inversion of Control )-Dependency Injection: Bu iki  konuda iyi araştırılması gereken konulardandır fakat yinede kısaca bir tanımlama yapmaya çalışacağım. Bu terimler genelde beraber kullanılmakta olsalar da aslında farklıdırlar. IOC, kısaca uygulama içerisinde nesne tanımlama sürecinin sizden alınarak bir framework üzerine verilmesidir. Dependency Injection, IoC yerine kullanılsa da aslında IoC’nin altında bir kavramdır.
Yazılımlarda bağımlılık dereceleri vardır ve iyi tasarlanmış bir yazılımın gevşek bağlı (loosely coupled) olması hedeflenmektedir, bu bize yazılımın geliştirilebilirliği açısından yarar sağlar. Dependecy Injection da bu bağımlılık yönetimlerinin programcıdan alınarak autofac gibi kütüphanelere verilmesi, bağımlılıkların kontrolünün program tarafından sağlanmasıdır. Bu kavramlar belirli bir dile özgü kavramlar değildir.

https://medium.com/@atarikguney/dependency-injection-nedir-1124c15249ad (Türkçe)
http://blog.bytecode.tech/inversion-of-control-vs-dependency-injection/ (İngilizce)

Serverless architecture: Sunucusuz mimari olarak adlandırılan bu sistemde geliştiricilerin sunucu yönetimi, konfigurasyonu vb. uğraşlarda olmadığı, programını yazarak sadece yayınlamaya odaklandığı bir mimaridir.
Konu hakkında detaylı bir yazı linkte bulunuyor ayrıca link içerisinde http://www.codefiction.tech/ sitesinin serverless architecture yapısına geçişi ile ilgili bilgiler bulabilirsiniz.

https://medium.com/codefiction/serverless-architecture-sunucusuz-bir-d%C3%BCnya-m%C3%BCmk%C3%BCn-m%C3%BC-f7abab6ea0c8 (Türkçe)
https://martinfowler.com/articles/serverless.html#WhatIsServerless (İngilizce)

AWS lambda, Google Cloud ve Microsoft Azure : Serverless computing için hizmet sağlayan 3 dev bulut platformudur. Hepsinin farklı avantaj ve dezavantajları bulunmaktadır. İleride bunun ile ilgili daha detaylı bir yazı yazmayı düşünsem de şimdilik daha detaylı bilgiler için aşağıdaki linklerden faydalanabilirsiniz.

https://www.infoworld.com/article/3265750/paas/serverless-in-the-cloud-aws-vs-google-cloud-vs-microsoft-azure.html
https://aws.amazon.com/lambda/
https://cloud.google.com/functions/
https://azure.microsoft.com/en-us/services/functions/

Continuous Integration: Yazılan programın, kodun belirli bir süreç için otomatize edilerek sürecin hızlandırılması ve güvenli hale getirmesi olarak açıklanabilir. Tabi ki bu süreçlerde uyarılar vb. gibi düzenlemeler gerekiyor.

Continuous Delivery: Continuous Integration sürecinin üzerine çalıştırılabilir uygulamaların otomatik olarak üretilmesi, kaydedilmesi de eklenirse Continuous Delivery yapılmış olur.

Continuous Deployment: Bir önceki süreçlerden başarı ile çıkmış paketlerin yayın ortamlarına (Test, Production vb.) sunulması. Tabi ki burada da ekstra işlemler bulunmakta. Örneğin; bir paketin sunuculara parça parça yüklenerek versiyon geçişinin daha güvenli ve kesintisiz bir şekilde yapılması gibi.

Bu üç süreç ile ilgili kısaca bahsetmeye çalıştım. Tabiki bunlar genelde toollar aracılığı ile yapılmakta. Jenkins,Travic Cl, Bamboo bu araçlara örnek olarak verilebilir.

https://medium.com/@selcukusta/continuous-integration-ci-%C3%BCzerine-laflamalar-9b7f7d2dad07 (Türkçe)
https://www.atlassian.com/continuous-delivery/ci-vs-ci-vs-cd (İngilizce)

Sql deadlock nedir? : Ufak ufak sql tanımlamalarına da girmeye çalışacağım. En önemli hatalarda biri olan ölümcül kilitlenme olarak adlandırılan deadlock, 2 işlemin birbirini kitlediği kaynaklara erişmek istemesi durumudur.
Önemli bir performans kaybı sağlar, müdahale edilmeyen durumlarda sunucuyu cevap veremez hale getirebilir.

http://www.csharpnedir.com/articles/read/?id=742 (Türkçe)
https://www.sqlshack.com/what-is-a-sql-server-deadlock/ (İngilizce)

DBConcurency Exceptions: 2 kullanıcının aynı anda, aynı verileri bir veritabanı üzerinde değiştirmeye çalışması durumudur.

https://stackoverflow.com/questions/22035630/concurrency-exceptions-in-entity-framework (İngilizce)

DbIsolation Levels:  Kısaca database seviyesinde veri tutarlılığını sağlamak için uygulanan farklı çözüm yollarıdır. 4 ana strateji vardır. Bunlar; READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE.
Bu konuda benim de örnek olarak MsSql üzerinde denediğim videoyu aşağıda bulabilirsiniz.

https://www.youtube.com/watch?v=kioh22IfFbU (İngilizce)
http://highscalability.com/blog/2011/2/10/database-isolation-levels-and-their-effects-on-performance-a.html (İngilizce)

Evet bir yazının daha sonuna geldik, hepinize iyi haftasonları. Kalın sağlıcakla … 😀

“Yazılım Terimleri – 03” için 2 cevap

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir