IEEE İstanbul Üniversitesi – Cerrahpaşa ve İstanbul Teknokent Entertech işbirliği ile düzenlenen Mühendislikte Topuk Sesleri etkinliği 4-5 Mart tarihinde sizlerle. Mühendislikte kadın ve erkek eşitliğinin vurgulanacağı, sektörün önde gelen firmalarının mühendislikteki cinsiyet eşitliğini nasıl desteklediklerini konuşmanın amaçlandığı, kadın ve erkeğin iş hayatındaki yerini ve birlikte çalışmanın verimliliğini, alanlarında uzman değerli konuşmacılar ile tartışılacağı, IEEE İstanbul Üniversitesi – Cerrahpaşa komitelerinden biri olan Women In Engineering komitesi öncülüğünde gerçekleşecek olan Mühendislikte Topuk Sesleri etkinliği için geri sayım başladı. 4-5 Mart tarihlerinde sektörün tanınmış firmalarının üst düzey yöneticilerin bulunduğu, birbirinden güzel oturumları, interaktif fuaye alanı, sürpriz çekilişler ve sosyal konuğu ile İstanbul Üniversitesi Avcılar Kampüsü Mühendislik Fakültesi A Blok Konferans Salonunda olacak.
Docker ve container teknolojisine başlamak, Kubernetes’e geçmek isteyen ve temel container teknolojisini merak eden, uygulamalarını Docker containerları içerisinde çalıştırmak isteyenlere yönelik olan bu etkinlikte, örnek bir uygulama alınıp container haline getirilerek, başkalarıyla ve farklı sunucularla paylaşılması, yayına alınması, uygulama geliştirilirken container teknolojisinin aktif olarak kullanılmasını görüyoruz. Ardından Docker Compose ile birden fazla containerı çalıştırmayı ve database verilerini kalıcı hale getirmeyi görerek kendi uygulamalarımızı yayına alacak temelleri atıyoruz.
Eğitim İçeriği;
Giriş/İçerik
Container ve VM
Docker’a başlangıç
İmaj, Container, Dockerfile Kavramları ve Farklılıkları
Örnek Uygulama
Dockerfile Temelleri
Örnek Uygulamayı Dockerlaştırma
Örnek Uygulamayı Docker ile Çalıştırma
Uygulama Paylaşma ve Delivery
DB Persistence
Bind Mount
Network Oluşturmak ve İzolasyon
Birden çok Containerı Aynı Anda Çalıştırmak
Docker Compose ile Çalışmak
Eğitim programının kırılımı ise aşağıdaki gibidir;
13:00 – 14:00 Giriş/İçerik, Container ve VM, Docker’a başlangıç, İmaj, Container, Dockerfile Kavramları ve Farklılıkları, Örnek Uygulama
14:00 – 14:15 Çay & Kahve Arası
14:15 – 15:15 Dockerfile Temelleri, Örnek Uygulamayı Dockerlaştırma, Örnek Uygulamayı Docker ile Çalıştırma, Uygulama Paylaşma ve Delivery
15:15 – 15:30 Çay & Kahve Arası
15:30 – 16:30 DB Persistence, Bind Mount, Network Oluşturmak ve İzolasyon, Birden çok Containerı Aynı Anda Çalıştırmak, Docker Compose ile Çalışmak
Bu web seminerimizde yeni Akıllı Çalışma Alanımıza, ne getirdiğine, nasıl göründüğüne ve günlük çalışmalarımıza nasıl fayda sağlayacağını anlatacağız.
Günümüzde çalışanlar ofisten, evinden ya da tercih ettikleri herhangi bir yerden çalışmak isteyebilirler. Citrix, çalışanlara aynı deneyimle herhangi bir cihazı kullanarak herhangi bir yerden güvenli ve verimli çalışma yeteneği sağlıyor.
Türkiye’nin en büyük WordPress etkinliği WPFest, WordPress dünyasını bir araya getirmeyi amaçlıyor. WordPress’te SEO, performans, e-ticaret konularının konuşulacağı etkinlik, Türkiye’nin en büyük WordPress etkinliği olarak Natro.com ana sponsorluğunda geçtiğimiz sene olduğu gibi alanında uzman konuşmacılarıyla bu sene de Türkiye’de WordPress’e yön verecek.
Saudi IoT is the portal to unprecedented opportunities in the technology sector, which is on a path of exponential growth in KSA. The all-inclusive technology event will bring together the tech leaders, innovators, visionaries, technocrats, tech giants on a single platform to promote the ‘Digital Transformation’ in the Kingdom of Saudi Arabia.
Saudi IoT will showcase new and innovative concepts, offering opportunities for tech entrepreneurs and business people to build partnerships with international firms. Global businesses will benefit by being able to build a local presence through Saudi partners.
Saudi IoT’s profuse objective is to bring the complete digital / tech ecosystem under one unique platform to embark the Digital Transformation journey in the Kingdom & promote Technological Evolution in the region. This event is the only bridge of its kind between regional and international technology players. The eagerly awaited Conference and workshops will focus on Blockchain, Cyber Security and Artificial Intelligence as they converge into the Internet of Things. A line-up of outstanding speakers will address delegates at the IoT conference, while the different experience zones will give participants a feel of the latest in technologies and applications.
Microsoft Patch Thursday olarak bilinen her ayın ikinci haftası salı günü yayınlanan güvenlik güncelleştirmeleri ve düzeltileri içeren güncelleştirmeler yayınlar.
Bir güvenlik araştırmacısı tüm Exchange Server sürümlerini etkileyen sıfır günlük ( zero-day ) keşfettiğini açıkladı. Zafiyet uzaktan kod çalıştırmaya izin veriyor.
Microsoft başta belirttiğimiz gibi bu ay yayınlanan Patch Thursday güncelleştirmelerinde zafiyetin kapatıldığını belirtti.
Zafiyet CVE-2020-0688 kodu ile talip edilirken saldırganların zafiyeti kullanarak uzaktan kod çalıştırmaya ( Remote Code Execution ) olanak saldığı belirtiliyor.
Microsoft ” memory corruption vulnerability ” olarak nitelendirdiği güvenlik açığı, zafiyet barındıran sisteme özel hazırlanmış mail göndermek suretiyle istismar edilebiliyor.
Zafiyet Exchange Server üzerindeki Exchange Control Panel (ECP) üzerinde bulunuyor. Microsoft zafiyetin giderilmesi için güncellemelerin hızlı bir şekilde yapılmasını tavsiye ediyor.
Son olarak zafiyetin nasıl istismar edildiği gösteren bir video da paylaşılmış, sistemlerinizi koruma amacı ile videoyu buradan izleyebilirsiniz.
Zyxel bu pazartesi NAS depolama cihazlarında keşfedilen bir zafiyet için güncelleme yayınlamıştı. Dün ise Zyxel yaptığı açıklamada aynı kritik zafiyetin güvenlik duvarlarında olduğunu da kabul etti.
Zafiyet daha önceki NAS ürünlerinde olduğunu gibi yine firmware yazılımlarında, zafiyet ile Remote Code Execution ( Uzaktan Kod Yürütme ) yöntemi kullanılarak sistemler istismar ediliyor.
Ürünlerde ortaya çıkan zafiyetten yararlanmak için kullanılan istismar kodlarının Dark Web ve Deep Web gibi ortamlarda 20.000 dolar gibi rakamlarda satıldığı bildirildi.
Zyxel yaptığı açıklamada güncellemelerin yayınlandığı açıkladı. Yayınlanan güncellemeler şuan için hotfix olarak yayınlandı standart güncellemeler mart ayında yapılacağı belirtildi.
Şunu da belirtmeden geçmemek gerekli Zyxel 2016 öncesi NAS ürünleri için hotfix yayınlamazken kullanıcıların önlem olarak cihazların internet bağlantılarını kesmelerini yada güvenlik duvarlarının arkasına konulması gibi yöntemler öneriliyor. Aynı şey bazı güvenlik duvarı modelleri içinde geçerli..
Güvenlik uzmanı Alex Holden ilginç bir açıklamada bulunarak “bu güvenlik açığının istismar edilmesi o kadar kolay ki diğer Zyxel ürünlerde de olduğunu düşünüyorum” şeklinde konuştu.
Eskiden sadece belirli bir kesime hitap eden uygulamalar geliştirirken, günümüz teknoloji çağının ilerlemesiyle ve global marketten de bir pay alabilmek için, artık daha büyük bir kesime hitap eden uygulamalar geliştirmemiz gerekiyor.
Geliştirdiğimiz uygulamaların 7/24 kesintisiz hizmet verebiliyor olması ve response süreleri düşük olan, kullanıcı deneyimi sorunsuz ve yüksek olan uygulamar olması da oldukça önem arz ediyor.
Bildiğimiz gibi uygulamalarımıza bu kabiliyetleri kazandırabilmek için, bir çok teknoloji ve mimariler’den yararlanıyoruz. Microservice yaklaşımı ile scalable, resilient ve lightweight uygulamalar geliştiriyor, response sürelerini minimize edebilmek için de farklı caching teknolojilerinden faydalanmaya çalışıyoruz.
Peki, bu kadar mimari boyutta uygulamalarımıza bir şeyler kazandırabilmek için uğraşırken, bazı durumlarda neden kod’larımızı, thread’lerimizi blokluyoruz?
Unutmamalıyız ki mimari boyutta uygulamalarımıza bir şeyler kazandırmaya çalıştığımız kadar, kod boyutunda yaptıklarımız da bi o kadar önemlidir.
Bazı durumlarda procedural programlama paradigması mantığından farklı olarak, yani kod satırlarındaki akışların sırasıyla takip edilmesi yerine, event-based programlama mantığında hareket etmeli ve uygulamalarımızı reactive bir hale getirmeliyiz.
En büyük yardımcımız, Reactive Extensions (Rx)!
Rx’i, kısaca hatırlayalım.
Rx için kısaca, observable stream’leri kullanarak push-based, asynchronous ve daha responsive uygulamalar geliştirebilmemize olanak sağlayan güçlü bir library’dir diyebiliriz.
Rx, complex business logic’lerini daha basit bir halde ve ayrıca asynchronous olarak kolay bir şekilde handle edebilmemizi sağlamaktadır. Ayrıca Rx, bir çoğumuzun bildiği gibi yeni bir konsept olmamakla beraber, temelinde Observer design pattern konsept’i bulunmaktadır.
Kullanım senaryolarını ise, genel olarak aşağıdaki gibi sıralayabiliriz.
Event-based işlemler. Özellikle uygulama düzeyindeki complex business logic’leri daha kolay bir şekilde handle edebilmek ve request’lere karşı responsive olabilmek için.
Asynchronous stream’leri sürekli consume edebilme.
ve concurrent programlama.
Bu makale kapsamında ise kod’larımızı ve thread’lerimizi blok’lamadan, asynchronous ve event-based interaction’ları uygulamalarımız içerisinde en basit haliyle nasıl handle edebiliriz senaryosunu cover etmeye çalışacağım.
Observers
Örnek bir uygulamaya geçmeden önce, Rx’in temel taşlarını oluşturan “IObservable<T>” ve “IObserver<T>” interface’lerinden bahsetmek istiyorum.
Bu harika ikili, tıpkı “IEnumerable<T>” and “IEnumerator<T>” interface’lerine benzemektedir. Farklı olarak pull-based bir yaklaşım yerine, push-based bir yaklaşım ile çalışmaktadır. Böylece sürekli bir kaynakta data var mı diye sormak yerine, ilgili kaynağa subscribe olarak event’lere karşı daha responsive uygulamalar geliştirebilmekteyiz.
“IObservable<T>” interface’ini, gözlemlemek istediğimiz bir kaynak olarak düşünebiliriz. İçerisinde ise “Subscribe(IObserver<T> observer)” method’unu bulundurmaktadır. Adından da anlayabileceğimiz üzere, “IObserver<T>” ise gözlemcimiz.
Hemen basit bir örnek gerçekleştirelim.
using System.Reactive.Linq;
namespace ReactiveNumbers
{
class Program
{
static void Main(string[] args)
{
IObservable<long> numbers = Observable.Interval(TimeSpan.FromSeconds(1));
numbers.Subscribe(num =>
{
Console.WriteLine(num);
});
Console.ReadKey();
}
}
}
Yukarıdaki console uygulamasına bakarsak, “IObservable<T>” tipinde her saniye tetiklenecek bir kaynak oluşturduk. Ardından bu kaynağa subscribe olarak, data var olduğu sürece console ekranına yazdırılmasını sağladık.
Console çıktısı ise, aşağıdaki gibi sonsuz bir şekilde olacaktır.
% dotnet run
0
1
2
3
4
5
6
7
8
9
...
Subject
Bir gün bizden anlık bir chat uygulaması geliştirmemiz istediğini varsayalım. Ayrıca chat mesajlarının persistent olması ve bu işlemin son kullanıcı response sürelerini etkilememesi de istenmektedir.
Bu kapsamda, anlık chat işlemleri için SignalR library’sinden yararlanalım.
Peki, öncelikle aşağıdaki gibi bir ASP.NET Core Web API projesi oluşturalım. Ardından “SignalR” ve “System.Reactive” library’lerini NuGet üzerinden projeye dahil edelim.
Şimdi “Models” isminde bir klasör oluşturalım ve içerisinde “ChatMessageReceivedEvent” adında bir event model’i tanımlayalım.
namespace MyChat.Models
{
public class ChatMessageReceivedEvent
{
public string Message { get; set; }
}
}
Bu event’i, socket üzerinden bir chat mesajı aldığımızda publish edeceğiz. Böylece non-blocking, event-based bir chat uygulaması geliştirmeye çalışacağız.
Şimdi ise “Handlers” isminde bir klasör oluşturalım ve içerisinde Rx’i implemente edeceğimiz interface’i aşağıdaki gibi tanımlayalım.
using System;
using MyChat.Models;
namespace MyChat.Handlers
{
public interface IChatEventHandler
{
void Publish(ChatMessageReceivedEvent eventMessage);
void Subscribe(string subscriberName, Action<ChatMessageReceivedEvent> action);
void Subscribe(string subscriberName, Func<ChatMessageReceivedEvent, bool> predicate, Action<ChatMessageReceivedEvent> action);
}
}
Tanımlamış olduğumuz “Publish” method’u ile, Rx stream’ine bir event göndereceğiz. Ardından “Subscribe” method’u ile de, Rx stream’ine dilediğimiz bir action’ı ekleyeceğiz.
Şimdi aşağıdaki gibi “Handlers/Implementations” klasörü altında implementation işlemini gerçekleştirelim.
using System;
using System.Collections.Generic;
using System.Reactive.Linq;
using System.Reactive.Subjects;
using MyChat.Models;
namespace MyChat.Handlers.Implementations
{
public class ChatEventHandler : IChatEventHandler, IDisposable
{
private readonly Subject<ChatMessageReceivedEvent> _subject;
private readonly Dictionary<string, IDisposable> _subscribers;
public ChatEventHandler()
{
_subject = new Subject<ChatMessageReceivedEvent>();
_subscribers = new Dictionary<string, IDisposable>();
}
public void Publish(ChatMessageReceivedEvent eventMessage)
{
_subject.OnNext(eventMessage);
}
public void Subscribe(string subscriberName, Action<ChatMessageReceivedEvent> action)
{
if (!_subscribers.ContainsKey(subscriberName))
{
_subscribers.Add(subscriberName, _subject.Subscribe(action));
}
}
public void Subscribe(string subscriberName, Func<ChatMessageReceivedEvent, bool> predicate, Action<ChatMessageReceivedEvent> action)
{
if (!_subscribers.ContainsKey(subscriberName))
{
_subscribers.Add(subscriberName, _subject.Where(predicate).Subscribe(action));
}
}
public void Dispose()
{
if (_subject != null)
{
_subject.Dispose();
}
foreach (var subscriber in _subscribers)
{
subscriber.Value.Dispose();
}
}
}
}
Dikkat edersek burada, “IObservable<T>” yerine “Subject<T>” class’ını kullandık. Çünkü bu harika class, hem “IObservable<T>” hem de “IObserver<T>” ı implemente etmektedir ve bir proxy gibi davranmaktadır.
“Publish” method’unda ise, stream içerisinde yeni bir event gerçekleştiğinde “Subject” class’ının tüm subscriber’ları bilgilendireceği bir observable contract’ı olan “OnNext” method’unu implemente ettik.
Bu akışı görselleştirdiğimizde ise, aşağıdaki gibi görünecektir.
“Subscribe” method’u içerisinde ise, Rx stream’ine subscribe olma işlemini gerçekleştiriyoruz. Rx’in en sevdiğim tarafı ise, Linq operasyonlarını da destekliyor olması.
Unsubscribe işlemini gerçekleştirebilmemiz için ise, subscribe olma işlemi geriye bir “IDisposable” dönmektedir. “Dispose” method’u içerisinde ise, dictionary’e eklemiş olduğumuz subscriber’ların unsubscribe işlemlerini gerçekleştiriyoruz. Bu konu hakkındaki detaylı bilgiye ise, buradan ulaşabilirsiniz.
Şimdi chat kısmına geçebiliriz.
Bunun için, “Hubs” isminde bir klasör oluşturarak içerisinde “ChatHub” isminde bir class tanımlayalım ve aşağıdaki gibi implemente edelim.
using System.Threading.Tasks;
using Microsoft.AspNetCore.SignalR;
using MyChat.Handlers;
using MyChat.Models;
namespace MyChat.Hubs
{
public class ChatHub : Hub
{
private readonly IChatEventHandler _chatEventHandler;
public ChatHub(IChatEventHandler chatEventHandler)
{
_chatEventHandler = chatEventHandler;
}
public async Task SendMessage(string sender, string message)
{
await Clients.All.SendAsync("chat", sender, message);
_chatEventHandler.Publish(new ChatMessageReceivedEvent
{
Message = message
});
}
}
}
Burada basit olarak “SignalR” library’sinin “Hub” class’ını inherit alarak, chat için socket üzerinden kullanacağımız “SendMessage” method’unu tanımladık.
Ayrıca son kullanıcının gönderdiği mesajları, son kullanıcının response süresini etkilemeden persistent bir hale getirebilmek için, “IChatEventHandler” aracılığıyla bir observable stream haline çeviriyoruz.
Her bir mesaj publish edildiğinde ise, Rx stream’i içerisindeki “OnNext” method’u çağırılacak ve ilgili tüm subscriber’lar bu event’ten haberdar edilecektir.
Şimdi chat mesajlarını persist edebilmek için, Rx stream’ine “ChatHistoryConsumer” adında “Handlers/Implementations” path’i altına aşağıdaki gibi bir observer subscribe edelim.
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using MyChat.Models;
namespace MyChat.Handlers.Implementations
{
public class ChatHistoryConsumer : BackgroundService
{
private readonly IChatEventHandler _eventHandler;
public ChatHistoryConsumer(IChatEventHandler eventHandler)
{
_eventHandler = eventHandler;
}
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
_eventHandler.Subscribe(subscriberName: typeof(ChatHistoryConsumer).Name,
action: async (e) =>
{
if (e is ChatMessageReceivedEvent)
{
await PersistChatMessagesToDBAsync((ChatMessageReceivedEvent)e);
}
});
return Task.CompletedTask;
}
private async Task PersistChatMessagesToDBAsync(ChatMessageReceivedEvent e)
{
await System.Console.Out.WriteLineAsync($"Chat message received and persisted: {e.Message}");
}
}
}
Burada ise “ChatHistoryConsumer” class’ının bir background task’ı olarak çalışabilmesi için, “BackgroundService” class’ını inherit ederek “ExecuteAsync” method’unu implemente ettik.
Ardından “ExecuteAsync” method’u içerisinde ise, “ChatMessageReceivedEvent” için subscription işlemini gerçekleştirdik.
Şimdi “Startup” class’ını ise, aşağıdaki gibi güncelleyelim.
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using MyChat.Handlers;
using MyChat.Handlers.Implementations;
using MyChat.Hubs;
namespace MyChat
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddControllers();
services.AddSignalR();
services.AddSingleton<IChatEventHandler, ChatEventHandler>();
services.AddHostedService<ChatHistoryConsumer>();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapHub<ChatHub>("/hubs/chat");
});
}
}
}
Burada ise chat uygulamalasını test edebilmek için, Razor Pages‘i ve SignalR‘ı etkinleştirdik. Ardından gerekli injection işlemlerini gerçekleştirdik.
Şimdi test işlemini yapabilmek için, basit bir UI hazırlayalım.
Öncelikle gerekli SignalR javascript paketlerini projeye dahil edebilmek için, buradaki ilk adımı takip edelim.
Ardından “Pages” isminde bir klasör oluşturarak, içerisinde “Chat” adında aşağıdaki gibi bir Razor Page oluşturalım.
Burada ise oluşturmuş olduğumuz “ChatHub” a socket üzerinden bağlanacak ve mesaj gönderilebilecek basit bir UI hazırladık.
Şimdi test işlemine geçebiliriz.
Test edebilmek için uygulamayı “dotnet run” komutu ile çalıştıralım ve iki farklı browser üzerinden aşağıdaki gibi chat işlemini gerçekleştirelim.
Yukarıdaki console ekranına dikkat edersek, biz chat işlemini gerçekleştirirken oluşturmuş olduğumuz observer ise, mesajların persist edilme işlemini non-blocking ve asynchronous bir şekilde gerçekleştirmiştir.
Rx yaklaşımının güzel olan tarafı ise, yeni bir özellik eklenilmesi istendiğinde business logic’leri kompleks bir hale getirmeden bu değişikliklere izin vermesi. Örneğin, chat mesajları içerisinde kötü kelimelere karşı filtreleme yapılması özelliğinin istendiğini düşünebiliriz. Tek yapmamız gereken, ilgili Rx stream’ine yeni bir observer daha eklemek olacaktır.
Microsoft, çeşitli kalite iyileştirmeleri ve hata düzeltmeleri sunan Windows 10 1903 ve Windows 10 1909 için KB4535996 toplu güncelleştirmesini yayımladı.
Bu toplu güncelleştirmede ile Microsoft, daha önce Internet Explorer’daki CVE-2020-0674 güvenlik açığı kapatmak için yayınladığı yükledikten sonra kullanıcıların ağ üzerinden yazdırma sorunları ile karşılaştığı problemlerin çözüldüğünü açıkladı. Microsoft ayrıca arama kutusundaki sorunlarında giderildiğini açıkladı.
KB4522355 ile bazı düzeltilen sorunlar
ActiveX içeriğinin yüklenmesini engelleme sorunu giderildi.
.Mov dosyalarının özelliklerinin düzenlenmesiyle ilgili sorun giderildi.
Bekleme modunda pil performansı arttırıldı.
Yazıcı ayarları kullanıcı ara yüzünün düzgün görüntülenmesini engelleyen sorun giderildi.
Bazı uygulamaların ağ yazıcılarına yazdırılmasını engelleyen sorun giderildi.
Microsoft Edge’deki Internet Explorer modunun başarısız olmasına neden olan sertifika doğrulaması sorunu giderildi.
Yeniden başlatmadan sonra yazıcının Aygıt Yöneticisi’nde gizli bir aygıt olmasına neden olan sorun giderildi.
HPE SimpliVity veri depolamalarını HPE Omnistack olmayan sunucular ile paylaşabileceğinizi biliyor muydunuz? Bu makalemizde HPE Omnistack olmayan Esxi sunucularına veri depolama ünitesinin nasıl bağlanacağına dair bilgiler paylaşacağım.
Bildiğimiz üzere HPE, SimpliVity ürünleri için iş yükü ihtiyacınız ve bütçenize göre (CPU, Ram, Disk) uygun olarak belirleyebileceğiniz SimpliVity modelleri bulundurmaktadır.
Öngöremediğimiz bir büyüme yaşadığımızda ise direkt olarak ihtiyaç duyduğumuz CPU, Disk ve RAM kaynağını ekleyemediğimiz için ürün modelini yükseltmek mecburiyetinde kalıyoruz. Tabii buda duruma göre ekstra yüklü bir maliyet demek oluyor. HPE SimpliVity, tekilleştirme ve sıkıştırma konusunda ne kadar başarılı bir ürün olduğunu artık hemen hemen herkes biliyordur. Garantili bir şekilde kapasite tarafında kurum verisine göre ciddi oranlarda tasarruf sağlamaktadır. Öngöremediğimiz bir kaynak büyüme durumları genelde Ram ve CPU tarafında oluşuyor. Tamda bu noktada herhangi bir Compute Node ürünü ile ihtiyacınız olan CPU ve Ram kaynaklarını, SimpliVity’ nin tüm fonksiyonlarını kullanarak en uygun maliyet ile çözmeniz mümkün oluyor. HPE Omnistack sunucularına ek olarak Standart Esxi Host sunucularımızı cluster ortamına nasıl ekleyebileceğimizi, veri depolama ünitesine bağlamayı ve gerekli şartlar sağlanması durumunda herhangi bir kesinti olmadan VMware vMotion ile Compute Node üzerine kaynak dağıtımlarını nasıl yapacağımıza dair işlemlere başlayalım.
HPE SimpliVity Compute Node Gereksinimleri
Veri Depolama Ünitesi paylaşımı için en az 1G ya da 10G network kartı olmalı ve yapılandırılmalıdır.
Compute Node sunucusu aynı ya da farklı bir cluster altında olmalıdır.
SimpliVity Federasyonunda ki datastore paylaşımı için, Standalone Esxi Host Advanced Settings üzerindeki değerleri aşağıdaki resime göre güncelleyip, sunucu restart edilmelidir.
SimpliVity cluster ortamımıza Compute Node ‘u dahil ediyoruz. Tabii isterseniz Compute Node sunucularınızı ayrı cluster altında barındırabilirsiniz. Benim SimpliVity sunucularım ile Compute sunucularım aynı CPU ailesine ait olduğu için ben direkt olarak SimpliVity Federation altına Compute sunucularımı ekledim.
Compute sunucumuzda Omnistack sunucuları’ nın Storage VLAN ‘ nına uygun olacak şekilde VMkernel IP ve network ayarlarımızı yapılandırıyorum.
vMotion özelliğini aktif ediyorum. Aşağıdaki resim de görebileceğiniz gibi MTU değerini 9000 olarak veriyorum. MTU değerini vSwitch1 üzerinden de 9000 olarak yapılandırıyorum.
Bu ayarları yapılandırmadan önce switch üzerinden vlan trunk ve MTU size’ ını önceden yapılandırmanız gerekiyor.
HPE SimpliVity veri depolama ünitesine Compute Node Acces yapılandırma işlemine geçiyorum.Herhangi bir OVC sunucumun Storage network traffic IP adresini öğreniyorum.
Vcenter üzerinden Global Inventory Tabs sekmesine tıklıyorum. Datastores sekmesinden paylaşacak olduğum SimpliVity Datastore’ unun hostname ‘ini öğreniyorum.
Compute Node arayüzünden Esxi Shell servislerini aktif ediyorum. CLI ile bağlanıp vi /etc/hosts komutu ile host file ‘a erişim sağlıyorum.
Host kayıt ekleme işlemlerini yapıyorum. Aşağıdaki resimde görüldüğü gibi 10.34.2.11 omni.cube.io kayıdımı ekleyerek kaydetme işlemlerini yapıyorum.
Kaydettikten sonra cat /etc/hosts komutu ile host file tarafında son kontrollerimi yapıyorum.
HPE – SimpliVity Datastore Compute Node Erişim İşlemlerinin Yapılması
CLI üzerinden Omnistack Virtual Controller sunucusuna erişim sağlıyorum.
SimpliVity Omnistack host üzerinde ki CPU ile Compute Node aynı CPU grubuna ait olduklarından dolayı aynı cluster için tüm Compute sunucularıma canlı vMotion işlemini yaptıktan sonra kaynak dağıtım işlemlerine başladım. Eğer CPU grubu aynı değilse Evc modu aktif edebilirsiniz.
Bir SimpliVity makalemin daha sonuna geldik. Okuyup vakit ayıran herkese teşekkür ederim. Umarım faydası olmuştur.
Bildiğiniz üzere Oracle , bünyesinde geliştirdiği bir çok yazılım ve mühendislik donanımları ile günümüz teknolojilerine paralel olarak kendini geliştirmekte ve bununla birlikte yeni ürünlerini bizlere tanıtmaktadır.Bu yazımızda Sizlere Oracle tarafından üretilen kısaca ZDLRA yada uzun adıyla Zero Data Loss Recovery Appliance ürününü anlatacağız.
Bildiğiniz üzere herhangi bir kritik sistem için Backup ve Restore işlemleri ne kadar önemliyse, biz Oracle Database yöneticileri içinde bu işlemler bir o kadar kritik öneme sahiptir. Günümüz şartlarında hiç bir endüstriyel ürün veri tabanı yedekliliği için tasarlanmamıştır ve bu konuda performans göstermez. Her birimiz veri tabanı yedeği alırken yada bu yedeklere ulaşmak istediğimizde yazılımlar kullanırız.
Oracle dünyasında ise bu durum uzun süredir farklı. Oracle ZDLRA ile bizim problemimize çare oluyor. Bir makina düşününkü sizin için sıfır veri kaybı misyonu veri tabanınızı yedekliyor ve bunu çok yüksek performans ile yapıyor. Isınma turumuzu bitirdiğimize göre ZDLRA ‘nın teknik özelliklerine bakabiliriz.
Oracle ZDLRA donanımsal olarak yatay olarak ciddi boyutlara büyüyebilen bir ürün. Aşağıdaki şablonu incelediğimizde Base Rack olarak isimlendirilen şase 94TB gibi kapasitede çalışırken 5TB’lık veriyi bir saat içinde backup / restore yapabiliyor. Full Rack şaseye geçtiğinizde Kapasite 580TB gibi bir rakama ulaşırken 7TB veri bir saatte işlem görüyor. Gerçekten çılgın birşey.
Mimari tasarımına geçersek,
Oracle veri tabanı eko sisteminin bir parçası haline gelir. ZDLRA ilk full yedekten sonra yanlızca değişen veriler yedeklemektedir. Bu yedekleme işlemi RMAN Delta push isimli bir teknolojiyi kullanır ve bunu sıfır veri kaybı ile tamamlar. Sistem mimarisi gereği yedekleri farklı alanlarada transfer edebilir.
Full backup sonrası alınan incremental yedekler parametre yada kapasiteye bağlı olarak tutularak her zaman restore için hazırda tutulur. Tüm bu işlemler Oracle Enterprise Cloud Control tarafından monitör edilebilir.
ZDRLA ana veri tabanımıza erişirken RMAN Deltra push özelliğini kullandığı gibi, DELTA STORE teknolojisine de sahiptir. Deltra Store ZDRLA yazılımının deyim yerindeyse beynidir. Delta Store üzerine akan değiştirilmiş veri bloklarını doğrular ve bunları sıkıştırdıktan sonra dizinlere ekleyerek saklama işlevi görür. Değiştirilen bu bloklar ZDRLA üzerindeki veri tabanının temelini oluşturur. Bu yapı geleneksel yedeklemelere göre 5 kat performans ve yer tasarrufu sağlar.
Oracle ZDRLA ‘nın diğer özelliklerine baktığımızda Policy temelli bir koruma sunduğunu görüyoruz. ZDRLA üzerindeki yedekleri Tape yada farklı bir noktadaki ZDRLA üzerine aktarabiliyor. Kendi üzerinde hazır olarak gelen Gold, Silver ve Bronze policy kolaylık sağlarken aynı zamanda özelleştirilebilmektedir. Aşağıdaki örnek görsel incelendiğinde farklı ortamlar için farklı politikaları görebiliyoruz. Bu aynı zamanda her veri tabanına farklı politikalar uygulayabildiğimizi gösteriyor.
Oracle ZDRLA’nın inceleyeceğimiz yazılımsal özellikleri ;
Real Time Redo Transport
ZDRLA Uzak noktalardaki yönetimi
Autonomous tape arşivleme
Uçtan uca veri doğrulaması, veritabanı yedeklerinin doğruluğu
Incremental yedekleme stratejisi
ZDLRA tarafından yedeklerin yönetimi
Bulut Ölçekli Mimarisi
RMAN ve Oracle Enterprise Manager ile birleşik yönetimi ve kontrolü
Giriş niletiğindeki ZDRLA yazı dizimizin ilk bölümüne bitirken aşağıdaki ZDRLA için hazırlanan kaydı inceleyebilirsiniz.
Genellikle Tomcat Server olarak anılan Apache Tomcat yazılımı, Java Servlet, JSP(Java Server Pages), Java programlama dili ve Java WebSocket gibi JavaEE teknolojilerinin açık kaynak kodlu bir uygulamasıdır ve Java kodunun çalışabileceği bir HTTP web sunucusu ortamı sağlar.
Bir güvenlik uzmanın keşfettiği ve Ghostcat olarak tanımlanan zafiyet tüm Tomcat versiyonlarını etkilediğini açıkladı.
Ghostcat güvenlik açığından yararlanılarak, bir saldırgan Tomcat’te yayınlanan tüm web uygulamalarının yapılandırma dosyalarının ve kaynak kodu dosyalarının içeriğini okuyabilir. Ayrıca saldırganların sunucuda uzaktan kod yürütülmesini sağlayan kötü amaçlı JSP yüklemelerine olanak tanıyor.
Güvenlik açığı CVE-2020-1938 kodu ile izlenebilirken ve Tomcat 9/8/7/6’nın tüm sürümlerini etkiliyor.
Etkilenen sürümler şöyle
Apache Tomcat 9.x <9.0.31
Apache Tomcat 8.x <8.5.51
Apache Tomcat 7.x <7.0.100
Apache Tomcat 6.x
Apache Tomcat bu güvenlik açığını gidermek için 9.0.31, 8.5.51 ve 7.0.100 sürümleri yayınlandı.
Güvenlik açığını gidermek veya en aza indirmek için yapılacak birkaç adım var.
Bunlar şöyle:
Bu güvenlik açığını doğru bir şekilde gidermek için, önce Tomcat AJP Connector hizmetinin sunucu ortamınızda kullanılıp kullanılmadığını belirlemeniz gerekir
Eğer cluster veya reverse proxy kullanılmıyorsa, AJP’nin kullanılmadığını anlayabilirsiniz.
Aksi takdirde, cluster veya reverse sunucunun Tomcat AJP connector hizmetiyle iletişim kurup kurmadığını tespit etmeniz gerekli.
1. AJP Bağlayıcı hizmeti kullanılmıyorsa:
(1) <CATALINA_BASE> /conf/server.xml aşağıdaki satırı düzenleyin
(3) Düzenlemeyi kaydedin ve ardından Tomcat’i yeniden başlatın.
Yukarıdaki önlemlere ek olarak, elbette, güvenilmeyen kaynakların Tomcat AJP Connector hizmet portuna erişmesini önlemek için güvenlik duvarların da gerekli erişim izinlerini düzenleyiniz
2- AJP Connector hizmeti kullanılıyorsa:
AJP Connector hizmeti kullanılıyorsa, Tomcat’i 9.0.31, 8.5.51 veya 7.0.100 sürümüne yükseltmenizi ve ardından AJP Connector kimlik doğrulama bilgilerini ayarlamak için AJP Connector için “scret” özelliğini yapılandırmanız öneriliyor.
Özgür yazılım dünyasından çıkan sertifika otoritesi Let’s Encrypt kurulduğunu günden bu güne tam dört buçuk yıl sonra 1 milyarıncı sertifikasını yayınladı.
Let’s Encrypt, Linux Vakfı tarafından desteklenen ve HTTPS’nin yayınlaştırılmasını hızlandırmak için Internet Security Research Group (ISRG) tarafından sunulan güvenli, otomatik ve erişilebilir bir sertifika yetkilisidir (CA). Ücretsiz dijital sertifikalar sağlayarak kullanıcıların sitelerini güvenli hale getirmesine yardımcı oluyor.
Özellikle, web sitelerinin yaklaşık yüzde 58’i Haziran 2017’de dünya genelinde HTTPS üzerinden yayınlandı (ABD’de yüzde 64), şuna itibariyle web sitelerinin yüzde 81’i şifreli bir bağlantı üzerinden yayınlandı. (ABD’de yüzde 91).
Son 10 yıldır bulut bilişim anlatan birisi olarak bu tür geçişlere artık alıştım. Malum her 3 ayda bir bir şekilde güncelleme alan ve sürekli yeni bir hizmet, servis sunan public cloud üreticilerinin başında yer alan Microsoft için bir dönüm noktasına saha geldik.
Belki yeni yeni Azure ile tanışanlar için çok bir anlam ifade etmeyen Azure Service Management (ASM) aslında bizim bu işlere ilk başlarken kullandığımız Azure için Classic Deployment model dediğimiz ve Azure Classic portal (https://manage.windowsazure.com/) üzerinden açılan kaynaklar için genel olarak verdiğimiz isimdir. Örneğin yeni nesil kaynaklar Azure Resource Manager yani ARM olarak isimlendiriyoruz.
Teknoloji geliştikçe aslında cloud üreticilerinin ürünlerinde de yenilikleri beraberinde getiriyor. Yeni nesil sanal makineler bunların başında geliyor. Microsoft altyapısını sürekli güncellediği için artık eski nesil kaynaklarıda yavaş yavaş kapatıyor. Muhtemel önümüzdeki 3 yıl içerisinde hali hazırda bu kadar eski kaynakları kullanan müşteriler kalmaz ancak yinede bu konuya kulak kabartmakta fayda var.
Merhaba ilk makalemiz olan “Adli Bilişim’de İmaj Alma Yöntemleri Bölüm 1 ” de kanun ve yasalardan bahsetmiş, sonrasında örnek bir senaryo üzerinde adli bir olay meydana geldiğinde neler yapılması gerektiğini örnek senaryo üzerinde gerçekleştirmiştik.
Şu ana kadar imaj işlemlerinde FTK IMAJER programını kullanarak senaryomuzdaki “şüpheli“ bilgisayarın önce ram sonra disk imajlarını alarak makalemizi tamamlamıştık.
Bu makalemiz ile kaldığımız yerden devam ediyoruz. Yapmak istediğimiz aldığımız imajları açarak incelemek
Hedefler
1- RAM ve Disk imajını açmak
2 – Açılan imaj üzerinde arama yapmak
3 – İmaj içerisinden delil çıkarmak.
4 – Çıkarılan delilerin imajını almak
5 – Alınan yeni imajı görüntülemek
Aşağıda ” Add Evidence Item.. ” bu menü sayesinde biz aldığımız imajları açabiliyor üzerinde inceleme başlatıyoruz. Buraya tıklayarak başlıyoruz.
1- Physical Drive – Fiziksel bir diski inceleme için kullanılır ( Canlı adli imaj inceleme – Live Forensics )
Not: “Burada bir not düşmek istiyorum. FTK’nın portable sürümü de var ( FTK Imager Lite version ) olarak geçiyor. Bu sürümü bilgisayara kurmadan çalıştırabiliyorsunuz örneğin bir bilgisayar var hemen onun üzerinde çalışma yapmak zorunda kalabilirsiniz bu durumda hemen bu sürümü kurmadan şüpheli bilgisayarda çalıştırıp adli incelemelerinizi yapabiliriz.”
2 – Logical Drive – Disk üzerindeki bölümler üzerinde çalışmak için ( C,D ) kullanılır.
3 – Image File – Mevcut bir imaj dosyası üzerinde çalışmak için kullanılır.
4 – Contents of a Folder – Bir klasörün ve dosya üzerinde çalışma yapmak için kullanılır.
Ben daha önce aldığım imajları inceleyeceğim için ” Image File ” ile devam ediyorum.
Şimdi aşağıdaki ekrandaki ekranda bir detaydan bahsetmek istorum. İlk makalede ram ( memory ) imajı alırken bazı seçeneklerimiz vardı.
Aşağıdaki ekranda eğer “Create AD1 file” seçeneğine tıklar da imaj alırsanız hem ram imajını hem de “pagefile.sys” imajını alarak tek imaj haline getirir bunun yanında içersin de HASH bilgilerinin de olduğu bir dosya oluşturur.
Yok bunu seçmez sadece ram imajını yada onun yanında “pagegile.sys“seçeneğini seçip imaj alırsanız, iki imajı ayrı ayrı alır ve bilgi dosyayı üretmez aklınızda olsun o yüzden ben hepsini seçip öyle imaj alıyorum.
Yukarıda bahsettiğim şekilde hem tüm seçenekleri seçtiğim için tüm şekillerde imaj aldı.
1 – AD1 imajı ( içerisinde ram ve pagefile.sys imajları var )
2 – Ram imajı
3 – Pagefile.sys imajı
Öncelikle “memcapture.ad1” imajı yüklüyorum.
Bakın az önce bahsettiğim gibi tek bir imaj içerisinde hem ” ram ” hem de ” pagefile.sys ” var.
Ve imaj ile beraber oluşturulan HASH bilgilerinin de olduğu dosya.
Şimdi ram imaj dosyamızı açtık. Burada en çok kullandığımız dört bölüm var.
1 – Burada açılan imaj dosyamız görülmektedir.
2 – Custom Content Source – Bu alanın nasıl kullanacağımızı makalenin devamında örnekler ile göstereceğim ama kısa bir bilgi vereyim. Bu bölüm diyelim ki bir adli inceleme yapıyorsunuz ve incele esnasında bir veriyi ( bir dosya yada bir klasörde olabilir ) başka biri ile paylaşmak istiyorsunuz işte bu gibi durumlarda bu menü kullanılır.
3- Bölümde imajın içeriğini görebiliyoruz.
4 – Bölümde verinin içeriğini görebiliyoruz.
Şimdi ram imajı içerisinde arama yapmak istiyorum. Bunu yapmak çok kolay yukarıda ki resimdeki dördüncü bölüme tıklayıp “ctrl+f” tuş kombinasyonunu kullanarak arama kutusunu açıp istediğimiz aramayı gerçekleştirebilirsiniz.
Bu işlemi ister bu imajdan devam edebilirsiniz yani az önce açtığımız “memcapture.ad1” imajından yada direk ram imajını yada “pagefile.sys” açıp yine arama yapabilirsiniz. Ben örnek olarak “memdumb.mem” yani ram imajımı açıyorum.
imaj içerisinde “vmtoolds.exe” olduğunu görebilmekteyiz
Yine başka bir örnek “oneDrive” olduğunu görebilmekteyiz
Şimdide yine daha önce aldığım disk imajını açıyorum
Görüldüğü gibi disk imajımı aştım ve yine istediğim gibi imaj içerisinde inceleme işlemlerine başlayabilirim.
Şimdi şunu yapmak istiyorum, bir imajı inceliyorsunuz ve imaj içerisindeki bazı dosyaları başka kişiler ile paylaşmak istiyorsunuz yada bazı dosyalar var sadece onları içeren bir imaj dosyası hazırlama istiyorsunuz.
Şimdi bu işlemi yapmak için “Custom Content Image” özelliğini kullanacağız.
İnceleme yaptığımız imaj içerisinde hangi dosyalar ile yeni bir imaj oluşturmak istiyorsak ilgili dosya ve klasöre sağ tıklayıp “Add to Custom Content Image (AD1)” tıklayarak ekliyoruz
Biz dosyaları ekledikçe aşağıdaki resimde görüldüğü gibi “Custom Content Sources” kısmına ekleniyor.
Tüm eklenmesini istediğimiz objeleri ekledikten sonra “File>Create Custom Content Image (AD1)” menüsü ile devam ediyorum böyle yeni bir imaj oluşturabileceğiz.
Yine imajıma bir isim veriyorum
Burası önemli “Image Fragment Size” burası şu işe yarıyordu. İmaj dosyalarını belirlediğiniz MB boyutlarına bölmek için kullanıyordu.Burayı “0” yaparsanız tek parça olarak imaj oluşturulabiliyor. Yanız “Custom Content Image (AD1)” imaj almaya özel eğer burayı “0” sıfır yaparsanız hata alırsınız aşağıdaki ekran görüntülerinde bunu görebilirsiniz.
Görüldüğü gibi “0” sıfır yaptım.
Ve hatayı görüyorsunuz.
Yeniden varsayılan değere getirdim “1500“
İmaj işlemini başlattım.
Aldığım imajı açtım ve görüldüğü gibi sadece eklediğim dosyalar gözükmekte.
Bir sonraki makalede imaj HASH bilgisi doğrulama ( imajların değiştirip değiştirilmediğini kontrol etme ) , imaj üzerinde şifrelenmiş veri arama ve bulma, imaj üzerindeki registry kayıtları üzerinde çalışma gibi konuları ele alacağız.
Evden çalışmanın öneminin arttığı bugünlerde, Cisco olarak tüm müşterilerine ücretsiz olarak 100 katılımcılı Webex kullanım hakkı veriyor. Alttaki linkten herhangi bir ücret veya taahhüt vermeksizin Webex hesabınızı oluşturup kullanmaya başlayabilirsiniz.
Internet’ in yaygınlaşması ile ortak çalışma kültürü artarken, yaşanan virüs salgını ve “homeoffice” disiplini sizi verimsiz kılmasın. Webex ile verimliliğinizi nasıl arttırabileceğinizi 100 kişilik toplantılarınızla ücretsiz deneyimleyebilirsiniz.
Oracle, Enterprise Edition kullanan kullanıcılara ek olarak Standart Edition 2 lisansı ile çalışan kullanıcılar içinde kesintisiz çalışmaları amacı ile High Availability özelliğini getireceğini duyurdu. Yapılan planlama sonucu ASM ve ACFS alt yapısının üzerine inşa edilen HA, Enterprise sürümünden sonra Standart Edition 2 içinde gelecek.
Standart Edition 2 High Availability , Oracle Database 20c ile birlikte ayrıca 2020 yılı içerisinde yayınlanacak Oracle Database 19c Release Update paketinin bir parçası olarak sunulacak.
Oracle Machine Learning, Oracle Spatial and Oracle Graph özelliklerinin ücretsiz olmasından sonra gerçekten güzel bir duyuru ile karşımıza çıkan Oracle veri tabanının bu sayede Standart Edition için de uzun süreli geliştirme yapacağını görüyoruz.
Bir güvenlik araştırmacısının keşfettiği zafiyet ile herhangi bir kullanıcının hesap bilgilerinin ele geçirilebileceği ortaya çıktı.
Amol Baikar, Facebook platformunu etkileyen ciddi bir OAuth Framework hatası buldu. Zafiyetin “Facebook ile Giriş Yap” özelliğinde olduğunu ortaya çıkardı. Böylece, bir kullanıcının Facebook üzerinden diğer web sitelerine giriş yapması durumunda hesaplar ele geçirilebiliyor bunun ile kalınmayıp diğer bu şekilde giriş yapılan web siteleri üzerinde de zafiyet oluşabiliyor.
Facebook, Baikar zafiyet ilgili olarak Facebook’a ulaştığında, teknoloji devi hatayı hemen kabul etti ve bir düzeltme geliştirdi. Amol Baikar bunun üzerinde yapılan düzeltmelerin yetersiz olduğunu gördü ve hesapların ele geçirileceğini tekrardan gösterdi, bunun üzerine Facebook gerekli düzeltmeleri yaparak araştırmacıyı 55.000 bin dolar ile ödüllendirdi.