MESUT ÇAKIR | İş Süreçleri ve Yazılım üzerine ...

AWS EC2 ile BigBlueButton Kurulumu Notlarım

Son günlerde uğraştığım bir konun notlarını daha sonraya kullanım için buraya bırakıyorum. Kendinize ait bir toplantı, eğitim modülü arıyorsanız Bigbluebutton tam size göre PDF üzerinden konu anlatımı, Anket, Web Cam, Screen Share, Youtube video streaming, İç odalar açmak vb gibi bir çok özelliğe sahip bir uygulama.

Kötü olarak söyleyebileceğim tek makina üzerinde çalışıyor olması ve ölçeklenebilirliği zayıf olması ama çözüleceğini düşünüyorum zamanla.

Neyse uzatmadan notlara giriyorum.

Region olarak Türkiye'ye yakın bir yer seçerseniz gecikmeleriniz az olacaktır. ABD yerine Europe tercih edebilirsiniz. Örn: Frankurt.

AWS EC2 üzerinde bir Linux Ubuntu 16 versiyon 20 GB makina açıyoruz. 4 CPU - 16GB RAM (c5.xlarge) gereksinim yazılmış ama ihtiyaca göre sonrasında küçültülebilir. 2 CPU 8 GB RAM olarak denedim gayet iyi performans verdi hatta 2 CPU - 4 RAM olarak bile fena değildi. Maliyetleri biraz yüksek 40$ ile 120$ arasında aylık maliyetler söz konusu fakat yıllık alımlar ile %60 kar edebilirsiniz. 

Linux makinanız kurulduğunda Security gruplar yani port ve IP izinlerini ayarlamalısınız.

Sonrasında makina hazır olduğunda ec2 makinanızı açarken amazon tarafından size verilen *.pem dosyasını puttygen.exe üzerinden geçirin. Pem dosyasını yükleyin, ppk uzantılı bir dosya alacaksınız bu dosyaları yedekleyin ve kaybetmeyin yoksa makina erişiminiz gider.

Ardından, putty.exe çalıştırın. Amazon üzerindeki çalıştırdığınız makinanın Ip adresini ubuntu@<Ipadresiniz> şeklinde aşağıdaki bölüme yazın. 

Sonrasında aşağıdaki gibi Auth bölümünden Ppk dosyasını seçin ve Session bölümüne geri dönüp SavedSession bölümüne bir isim verip kayıt edin bir sonraki gelişiniz için Load edip hızlıca uzak bağlantı yapmanızı sağlar.

Bağlantıyı sağladığızda bir console ekranı sizi karşılar. clear ile temizleyin ve aşağıdaki bir ekran üzerinden bbb kurulumuna başlayın. sudo su komutu ile root yetkisi alabilirsiniz.

Kurulum için https://github.com/mesutcakir/bbb-install?organization=mesutcakir&organization=mesutcakir adresini kullanabilirsiniz. 

Aşağıdaki komutu çalıştırın. Aşağıdaki mail ve host alanlarına kendi bilgilerinizi yerleştirin. (not: Bu Ip adresine domain yönlendirmenizi yapmayı unutmayın.)
wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-22 -w -s bbb.mesutcakir.com.tr -e test@mesutcakir.com.tr 

Kurulum bittiğinde herşeyiniz hazır olacak. 

 

Aşağıdaki komut ile uygulamanıza API bağlantısı için bir secretKey sahibi olabilirsiniz. Önemli bir veridir kayıp etmeyin.

bbb-conf -secret 

https://github.com/mesutcakir/BigBlueButtonApi adresi üzerinden C# ile api bağlantılarını nasıl yapabileceğinizi görebilirsiniz.

--Kayıtların videoya çevirilmesi

--Videoların s3 üzerine gönderilmesi

--Toplantı tamamlanması, videonun hazır olması gibi eventlerin bağlantıları

gibi içerikleri vakit bulursam paylaşacağım şimdilik bu kadar.

 

 

 

 

 

AWS Lambda Video Screenshot (Ekran Görüntüsü) Oluşturma

Merhaba,

Amazon S3 video yüklemeleri sonrası video içerisinden bir ekran görüntüsü üretilmesi ve sistem içerisinde kullanılması ihtiyacı doğmaktadır. Bunu kendi uygulamanız içerisinde yapabilirsiniz fakat memory, cpu gibi kaynaklarımızın yüke göre nasıl karşılık vereceğini yönetmekle uğraşmak istemediğimizde AWS S3 Event & AWS Lambda servislerini birlikte kullanabiliriz. Bu yazımda bunu nasıl yapabileceğiniz ile ilgili örnekler veriyor olacağım.

Maliyet Planı

Yapacağım uygulama 30MB video dosyasını ortalama 7 saniye içerisinde işler ve içerisinden istemiş olduğunuz resmi s3 üzerinde belirttiğiniz bölüme kayıt eder. 300MB Ram kullanır. 

Bu metriklerle bir hesap yaptığımızda 1 Milyon video için 1 resim üretmek istediğimiz 512MB kaynak ve ortalama 10 saniye üzerinden hesapladığımızda 83$ bir maliyet yaratırız. https://dashbird.io/lambda-cost-calculator 

Kaynaklar

https://github.com/mesutcakir/s3-video-portal/tree/master/VideoPortal-lambda

const fs = require('fs');
const childProcess = require('child_process');
const AWS = require('aws-sdk');
const path = require('path');
const ffmpeg = require('fluent-ffmpeg');
ffmpeg.setFfmpegPath("/tmp/ffmpeg");
ffmpeg.setFfprobePath("/tmp/ffprobe");
const s3 = new AWS.S3();
process.env['S3_BucketName'] = process.env['S3_BucketName'] || 's3-videoportal';
process.env['S3Key_ffmpeg'] = process.env['S3Key_ffmpeg'] || '_dev/ffmpeg';
process.env['S3Key_ffprobe'] = process.env['S3Key_ffprobe'] || '_dev/ffprobe';
process.env['SS_Size'] = process.env['SS_Size'] || '240x180';
exports.handler = (event, context, callback) => {
	console.log("started");
	//First Video 
	const srcKey = event.Records.find(x => x).s3.object.key;
	const findExtention = /(?:\.([^.]+))?$/;
	const srcExtention = findExtention.exec(srcKey)[1];
	const targetKey = srcKey.replace("." + srcExtention, ".jpg");
	const randomKey = Math.random().toString().replace(".", "");
	const videoFileName = "/tmp/" + randomKey + "." + srcExtention;
	//Copy Work Files
	const copy_ffmpeg = CopyFileFromS3(process.env['S3Key_ffmpeg'], "/tmp/ffmpeg");
	const copy_ffprobe = CopyFileFromS3(process.env['S3Key_ffprobe'], "/tmp/ffprobe");
	const copy_video = CopyFileFromS3(srcKey, videoFileName);
	Promise.all([copy_ffmpeg, copy_ffprobe, copy_video]).then(() => {
		SaveScreenshotToS3(videoFileName, {
			s3Key: "thumbnail/" + targetKey,
			imageTargetName: randomKey + ".jpg",
			ScreenshotSize: process.env['SS_Size'],
			ScreenshotCount: 1
		}, callback);
	}).catch(err => {
		console.log("Promise Error:", err);
	});
};
function SaveS3Object(s3Key, stream, callback) {
	s3.putObject({
		Bucket: process.env['S3_BucketName'],
		Key: s3Key,
		Body: stream,
		ContentType: "image/jpg"
	}, function (err, data) {
		if (err !== null)
			console.log("error: " + err);
		else
			console.log("upload s3 data");

		callback(err);
	});
}
function SaveScreenshotToS3(videoFileName, options, callback) {
	ffmpeg(videoFileName)
		.on('filenames', function (filenames) {
			console.log('Will generate ' + filenames.join(', '));
		})
		.on('end', function () {
			console.log(videoFileName + 'Screenshots taken');
			SaveS3Object(options.s3Key, fs.createReadStream("/tmp/" + options.imageTargetName), callback);
		})
		.screenshots({
			count: options.ScreenshotCount,
			size: options.ScreenshotSize,
			folder: '/tmp',
			filename: options.imageTargetName
		});
}
function givePermissionFile(fileName, callback) {
	childProcess.exec(
		'chmod 755 ' + fileName + ';',
		function (error, stdout, stderr) {
			if (error) {
				console.log('givePermissionFile Error', error);
			} else {
				console.log("givePermissionFile Success: " + fileName);
			}
			callback(error);
		}
	);
}
function CopyFileFromS3(srcKey, targetKey) {
	return new Promise((resolve, reject) => {
		var s3VideoStream = s3.getObject({ Bucket: process.env['S3_BucketName'], Key: srcKey }).createReadStream();
		s3VideoStream.on("end", function () {
			console.log("copy file:", targetKey);
			givePermissionFile(targetKey, (err) => {
				if (err) reject(err); else resolve();
			});
		});
		s3VideoStream.pipe(fs.createWriteStream(targetKey));
	});
}

//var event = require("./testdata.json");
//var findExtention = /(?:\.([^.]+))?$/;
//const srcKey = event.Records.find(x => x).s3.object.key;
//const srcExtention = findExtention.exec(srcKey)[1];
//var randomKey = Math.random().toString().replace(".", "");
//var videoFileName = "/tmp/" + randomKey + "." + srcExtention;

//console.log("srcKey:", srcKey)
//console.log("srcExtention:", srcExtention)
//console.log("videoFileName:", videoFileName)
//console.log("randomKey:", randomKey)

 

 

Türkiye Teknoloji Sektörü Durum Analizi Raporu - Kodluyoruz.org

Turkiye_Teknoloji_Sektoru_Durum_Analizi_Raporu_Kodluyoruz.pdf (2,17 mb) https://www.kodluyoruz.org/ tarafından yayınlanan bu analiz içerisinden başlıklar çıkartararak durumu anlamaya çalışıyoruz...

Analiz, kodluyoruz derneği aracılığı ile hazırlanmış ve ülkemiz üzerindeki gençlerin eğitim ve çalışma hayatlarının düzenlenmesi için eşsiz bir kaynak olmuştur.

Kodluyoruz Derneği, Türkiye’yi teknoloji üreten bir merkez haline getirmeyi hedefleyen bir sivil toplum örgütüdür.

Yönetici Özeti Derlemesi

Yönetici özeti gerçekten doğru tespitler ile doludur. Hepimizin şikayet ettiği eğimin hedefsiz ve içi boşluğunu güzel ifade etmiş görünüyorlar.

  • Türkiye’de yazılım sektöründe yetenek açığı seviyesi %75,9
  • Şirketler teknik bilgiden çok problem çözme, yeni alanları öğrenme, profesyonel etik davranışlar ve takım çalışması gibi değerlere önem veriyor. 
  • Hızla değişen dünya ve teknoloji sektörüne yön verecek gençler yetiştirmek istiyorsak, sadece lise veya üniversite seviyesinde değil, eğitim sisteminin ilk yıllarından itibaren eğitimi vermeliyiz. 
  • Kadın yazılımcı oranımızı arttırmalıyız. (Buna o kadar müsait bir ülkeyiz ki sadece ufak bir zihniyet değişimi ile harika işler yapılabilir)
    • Araştırma boyunca, cinsiyet ve şehir bazında eşitsizlikler tekrar tekrar kendini göstermiştir: Türkiye genelinde, kadın yazılımcı çalışan oranı sadece %17’de kalırken, kadın yazılımcıların sektörde karşılaştığı önyargılar bu oranın yükselmesinde ilk engellerden biridir.

Literatür Taraması: Araştırmalar Ne Diyor?

  • Bilgisayar Sektörü %42 ile en fazla beceri uyumsuzluğuna sahip sektör olduğu görülmektedir. 
  • İŞKUR kayıtlarına göre en çok işsiz bulunan 20 üniversite bölümü arasında 10. sırada 6.381 işsizle Bilgisayar Programcılığı bölümü, 13. sırada ise 5.133 işsizle Bilgisayar Teknolojileri ve Programlama bölümü gelmektedir.
    • İşsiz kalmak istemiyorsanız üniversiteye ek olarak internet kaynaklarından eğitimler almak zorundasınız. 
  • Üniversite eğitim sisteminin piyasanın talebine cevap verecek şekilde yeniden düzenlenmesi gerekmektedir.
    • Piyasada Türk şirket yoksa yabancı ülkelerde çalışma imkanları da mevcut doğru insanı yetiştirdiğimizde o kendi yolculuğu yapar zaten.
  • Üniversite içerisindeki verilen eğitimlerin güncel hayata uygunluğu daha iyi değerlendirilmelidir. (Bence)
  • Ayrıca 2016 yılı itibarıyla gençlerin yurtdışına göç etmeye başladığı görülmektedir. “Beyin göçü” olarak tanımlanan bu dalgada yurtdışına giden meslekler arasında ilk sırayı yazılım ve bilgisayar mühendisleri almaktadır.
  • Türkiye’de ise yazılım sektöründeki kurumların dijital dönüşümü için ihtiyaç duyulan uzman personel rakamlarında ciddi bir açık bulunmaktadır. Yapılan araştırmalar Türkiye’de bilgisayar bilimlerinin farklı alanlarından 100 bin civarında uzman personel açığı (yazılımcı, büyük veri analisti, güvenlik uzmanları, ağ uzmanları vd.) olduğunu göstermektedir.
  • Örneğin Türkiye’de otomasyonla mesleklerin %33’ünün yok olacağı öngörülmektedir.
  • OECD ülkeleri arasında İsveç bilgisayar kullanımı en yüksek olan ülkeyken Türkiye, ortalamanın altında kalarak %40’lık bir oranda en düşük bilgisayar kullanımına sahip ülke olmuştur. Benzer şekilde elektronik yazılımı en çok kullanan ülke Singapur’ken Türkiye OECD ortalamasının altında kalarak %20 ile en düşük seviyededir

Tüm bu değişimin içinde, gençleri ve yeni nesilleri değişen dünyaya hazırlamak gitgide daha da önem kazanmaktadır. 1870’lerde başlayan endüstri devrimi eğitim sistemlerini nasıl etkilediyse, şu an içinden geçtiğimiz Endüstri 4.0’ın da eğitim ekosistemini baştan değiştireceği öngörülmektedir. Türkiye olarak da bu değişime ayak uydurmanın ötesinde, değişimi yönlendirecek bir konuma gelmemiz için gençlerin potansiyellerini katma değeri yüksek alanlara taşımak için çalışmamız gerekmektedir. Kodluyoruz Akademi de tam olarak bunun için yola çıkmıştır.

 

Yazılım Sektöründe Talep: Firmaların Beklentileri? 

 

Ankete 9 farklı şehirden şirket katılmıştır ve bu şirketlerin 160’ı İstanbul’dadır. İstanbul’un yanı sıra Ankara’dan 62, Bursa’dan 30 ve Şanlıurfa’dan 19 şirket sorulara yanıt vererek ankete katılmıştır.

Firmaların tam zamanlı ve freelance çalışan sayıları iller arasında farklılık göstermektedir. Tam zamanlı çalışana en çok İstanbul ve Ankara’daki şirketler sahipken, araştırmaya Bursa’dan katılan şirketlerin %67’si ve Şanlıurfa’dan katılan şirketlerin %53’ünün çalışan sayısı 30’dan azdır.

Freelance çalışan dağılımı ise her ilde hemen hemen ortaklık göstermektedir (Grafik 4). Çalışmaya katılan şirketlerin yarısından azı freelance yazılımcılarla çalışmaktadır, freelancer yazılımcıların en az talep gördüğü şehir ise Şanlıurfa olarak ortaya çıkmıştır. İstanbul’daki katılımcı şirketlerin %38’i en fazla 9 freelancer yazılımcıya, %8’i ise 10’dan fazla freelancer yazılımcıya sahiptir.

Bugün ekiplerde aranan özellikler Şirketlere, çalışanlarının yazılım alanında öncelikle hangi platformlara hakim olmaları gerektiği sorulmuş ve tüm şehirlerde ilk üç sırayı Backend Developer, Web/Frontend Developer ve Mobil uygulama platformları almıştır. Devamında, sırasıyla DevOps, Agile Proje Yönetimi, Test/Kalite Güvence ve AI & ML & Big Data (yapay zeka/makine öğrenimi/büyük veri) yazılım ekiplerinde en çok aranan platformlardır. Mevcut platformlar arasında en az beklentiye sahip olunanlar ise Oyun Programlama ile AR & VR’dır.

Çalışanlardan hakim olmaları beklenen platformların yanı sıra, ‘Yazılım ekibindeki çalışanlarınızın hangi yazılım dillerini bilmesini bekliyorsunuz?’ sorusu sorulmuş ve verilen yanıtlar, Türkiye’de bugün en çok talep edilen dilleri ortaya çıkarmıştır: Buna göre, bugün en çok talep gören 5 dil SQL, Javascript, Java, C# ve Python olmuştur. Örneğin, İstanbul katılımcılarının %58’i SQL, %57’si JavaScript kullandığını söylemiştir. Diğer yandan, .NET MVC ve .NET Core, Node.js, PHP, React Native, Swift firmaların en az %20’si tarafından tercih edilen yazılım dilleri olmuştur. Aranan diller şehirler arasında paralellik gösterse de, özellikle Java, .NET MVC ve PHP’ye olan talep Şanlıurfa’da diğer şehirlere göre daha fazladır.

5 Yıl içerisinde eleman açığı büyümesi beklenen platformlar (Pyhton)


Daha fazla detay için pdf'i inceleyebilirsiniz.

Yazılım Müdürünün Not Defteri Derlemeleri - @yasarsafkan

Merhaba, faydalı olarak görüp okuduğum bu yazı dizisini birleştirip sizlerin ulaşımına sundum 1-37 + 1 toplam 38 adet resimden oluşan bu yazı dizisinin tamamını buradan (2,51 mb) indirebilir veya aşağıdan direk erişebilirsiniz. https://twitter.com/yasarsafkan/ takip etmenizi tavsiye ederim. 
 
 
 
#001 : Benim esas işlerim şunlar:
  1. Çalışanların önündeki engelleri kaldırmak. 
  2. İşleri öncelik sırasına koymak
  3. Diğer yöneticilerle koordinasyon (gerisi küsürat)
#002 
  • Plan, hep yapılması en zor zamanda, yani proje başlancında gereken bir şey
  • Detaylı planım olmadan, üst yönetimin baskısına direnemem
  • Planlama, plandan daha kıymetli
  • Doğru yönetir ve savunursam, planları her zaman güncelleyebilirim.
#003 İş Görüşmesinde adam hakkında öğrenilecekler
  • Kişilik
  • Yetenekler
  • Bilgi Seviyesi
  • Yetkinlikleri
  • Takım ile Uyumu
  • Beklentileri
  • Motivasyonu
  • İletişimi
#004 
Yapabileceğim en büyük hatalar şunlar; (Bunları yapmazsam, "daha" iyiyim)
  • Kendimi işe koşmak, ben yönetmezsem kim yönetecek.
  • Birşey işre yaramıyorsa onu daha çok yapmaya kalkışmak
 
#005 : Ben ekibin bir parçası değilim;
  • Ben farklı bir iş yapıyorum.
  • Sürekli aralarında değilim, olamam
  • Nezaketen davet ederlerse ofis dışı etkinliklerine seyrek gider, az kalırım. 
    • Böylesi daha sağlıklı....
 
#006 Şunlara hakkımın oolmadığını öğrendiim.
  • Herhangi bir yanlışa anlık tepki göstermek => Hiçbir şeyden haberim olmuyor
  • Suratımı asmak (özellikle sabahları) => Herkesin suratı asılıyor.
  • Formal güç kullanmak => Sandığım kadar gücüm yok zaten)
  • Ulaşılmaz olmak => İş İşten geçmiş oluyor
 
 
 
Yazılım projelerinin ana riskleri şöyle;
  1. Zaman planında kusur: %50 ihtimal x 1.3 süre
  2. Gereksinim şişmesi : %50 ihtimal x 1.07 süre
  3. Eleman kaybı : %50 ihtimal x 1.05 süre
  4. Spesifikasyonda anlaşmazlık: 1/7 ihtimal proje patlar
  5. Düşük çalışan performansı : +-%10 süre

Ortadan bakarsam, T -> 1.5T +- 0.5T

..durum ciddi.

 
 
#008 : Bir projenin getirisi belli değilse her birim maliyet her geliştirme saati  "fazla pahalı" gelecektir. 
"Getiriyi bilmiyorum" diyen paydaşa, alt-üst limitler çıkartırmak, birlikte belirsizlikle baş etmeyi göstermek gerekir.
...kolay değil.
#009 
  • Yazılım, zor, yavaş ve pahalı bir iştir.
  • Asıl pahalılık, işi yanlış yapmaktan, yanlış işi yapmaktan, tekrar yapmaktan, dönüp al baştan yapmaktan gelir.
  • Maliyet faktörleri önem sırasıda, teknolojiler, insanlar, sistemler ve yönetim olarak düşünülür.
  • Aslında sıralama tam tersidir. En önemli faktör, açık ara yönetimtir

...işimi doğru yapmalıyım.

 
 
#010
  • Çalışanların başarısından da, hatalarında da ekip adına ben sorumluyum.
  • Hata halinde suçlu değil, çözüm ararım.
  • Hata yapmayan çalışan, iş yapmıyordur.
  • Tekrarlanmayan hata hata değildir.
  • Çalılşanlarımı kimseye, özellijkle üst yönetime şikayet etmem ve kötülemem. Bu benim çaresizliğimi ve yetersizliğimi gösterir.

  • Çalışanların performansından ben sorumluyum.
  • Çalışanların eğitimi, maaşı, primi, izni, tatili, terfisi, ekip ile uyumu hep benim dertlerim.
  • Çalışanların kişisel ailesi, sağlık problemleride (x) işi etkiliyorsa (x) çalışan paylaşmak istiyorsa bal gibi benim derdim.
  • Bunların hepsi "çalışanların önündeki engelleri kaldırmak" işimin parçasıdır.

İşim insanlarla yani..

#013

  • Çalışanlara geri bildirim vermek işimin parçası
  • Bunu yılda bir kere "performans görüşmesi" şeklinde yapmak, kazadan sonra cenaze kaldırmak.
  • Geri bildirim, kazayı engellemeli, Haftalık bilemedin iki haftalık birebir görüşmelerde geri bildirim veririm. 
  • Gözlediğimi, yüklediğim anlamı ve önemi birbirinden ayırmaya çalışırım. Gözlemi esas tutup, çalışana kendi anlamını ve önemini yükleme şansı veririm.

 

#014

Saygı görmem için, saydıdeğer olamam gerekir. 

  • Adaletli olmaya çalışırım.
  • Keyfi davranmam, prensipli davranırım.
  • Yalan söylemem. Çalışanları kandırmam. Neyin açık, neyin gizli olduğu konusunda net olmaya gayret ederim.
  • Yönetirken, kendimi işin gereklerini ve mutlaka çalışanlarını kararlara dahil ederim.

....saygı güzelliktir, zorla olmaz.

 
Dr. Yaşar Safkan'a teşekkür ederiz.
Quality Software Management Consultant / Engineer / Software Architect / Entrepreneur / Instructor / Nuclear Physicist
Born May 29, 1973
Değerli makalelere bu adres üzerinden erişebilirsiniz. https://www.safkan.org/ 

https://twitter.com/yasarsafkan/

Amazon Ec2 Linux üzerinde MsSql Server 2017 Çalışmaları ve Yedekleme Senaryosu

Windows üzerinde alışık olduğumuz MSSQL kullanımını Linux üzerinde deneyimleme fırsatım oldu.

Amazon AWS üzerindeki denemelerimde %30 Maliyet kazancı sağlanabildiğini gördüm. "Ubuntu Server 16.04 LTS (HVM) With SQL Server 2017 Web" AMI üzerinden bir Ec2 instance üreterek işe başldım.

Başlangıç olarak test amaçlı 1CPU-2GB RAM t2.small bir makine ile başlamayı tercih ettim. Maliyet Ölçümü için s3 calculator ile baktığımızda 66.72$ Aylık(720saat) kullanım ücreti görüntüledim. Windows için 75.69$ olarak %10 fark olduğunu görüntüledim. 

Linux Makina Kurulumu nasıl Yapılır ?

Amazon Console üzerinden Ec2 içerisinden Launch Instance seçeneğini kullanarak bir linux makina ayağa kaldırıyoruz. "Ubuntu Server 16.04 LTS (HVM) With SQL Server 2017 Web" olarak AWS Marketplace içerisinde bulabiliriz.

Linux üzerinde bağlantı nasıl sağlanır ?

PuttyGen aracılığı ile bağlantıyı sağlayabilirsiniz. Makina kurulumu sırasında size verilen .pem dosyasını kullanarak işlemi yapacaksınız. PuttyGen açtığınızda Load tıklayarak pem dosyasını verin. Public ve private key kayıtlarını sağlayın.

Belirleyeceğimiz şifre ile giriş yapacağız. Güçlü bir şifre belirleyin.

Herşey hazır olduğunda bağlantı için Putty.exe çalıştırın.

Puttgen içerisinde belirlediğimiz şifremizi burada kullanarak giriş yapıyoruz.

Ve giriş yapıldı. SQL çalışıyor mu kontrol edelim.

systemctl status mssql-server

Linux üzerinde MSSQL kurulumu nasıl yapılır ?

Öncelikle iki doküman size yardım olacaktır. SQL hazır olarak gelecektir (AWS EC2) Aşağıda linklerini paylaştım. Sqlcmd kullanımı için kurulumu yapıyoruz. Sql Agent aktif hale getiriyoruz. 

sudo apt-get update
sudo apt-get install mssql-tools unixodbc-dev

sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
sudo systemctl restart mssql-server

https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-2017
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-sql-agent?view=sql-server-2017

Linux MSSQL sa şifresi nasıl belirlenir ?

sudo systemctl stop mssql-server
sudo MSSQL_SA_PASSWORD=ŞİFRENİZ /opt/mssql/bin/mssql-conf set-sa-password
sudo systemctl start mssql-server
systemctl status mssql-server

Linux MSSQL yeni kullanıcı ekleme nasıl yapılır ?

Buradan sonrası sql query ile ilerleyebileceğiniz yerlerdir. Örnek olarak.

sqlcmd -U sa -P Şifreniz -q "CREATE LOGIN KullaniciAdi WITH PASSWORD = 'ŞİFRENİZ';GO;CREATE USER KullaniciAdi FOR LOGIN KullaniciAdi;GO"

Linux MSSQL S3 üzerinde Backup/Restore nasıl gerçekleştirilir ?

apt install awscli kurulumunu yaparak s3 üzerindeki bir dosyanızı makina içerisine indirebilirsiniz.

aws s3 cp s3://sqlbackup/yourdatabase.bak ./yourdatabase.bak

sqlcmd -U sa -P Şifreniz -q "USE [master];GO;RESTORE DATABASE [yourdatabase] FROM DISK = '/yourdatabase.bak' WITH MOVE 'yourdatabase' TO '/mssql/data/yourdatabase.mdf',MOVE 'yourdatabase_log' TO '/mssql/data/yourdatabase.ldf', REPLACE;"

Sonrasında GO diyerek işlemi tamamlıyoruz. Artık var olan veritabanımızı içeri aktardık. Buradan sonrasını SQL management üzerinden bağlanarak maintaince plan üreterek zamanlamaları planlayarak backupları yönetebilir duruma geliyoruz. 

aws s3 sync ./ s3://sqlbackup şeklinde belirli bir klasördeki verilerin tamamını aktarabiliriz.

Düzenli S3 aktarımlı backup yönetimi için;

https://dev.to/lukebearl/ms-sql-server-backups-to-s3--on-linux-dan