9 Dolara Startup

Bir MVP yapmak için pahalı sunucular ve ücretli servisler gerekmez. Tek gereken AWS Free Tier ve biraz yaratıcılık.

AWS !

En basit şekilde düşününce, bir startup projesi 3 parçadan oluşur:

  1. Client / istemci / müşterinin kullanacağı ürün
  2. Servis / API
  3. Kontrol Paneli

Bu parçaları, Amazon’un sunduğu free tier içinde yaşatmak çok da kolay bir işlem değil. Eğer paranız varsa bunların hepsi için ayrı ayrı subdomainler açıp, ayrı ayrı sunucularda barındırabilirsiniz. Ama eğer yoksa, o zaman okumaya devam edin.

AWS, normalde free tier içinde kullanıcılara 1 adet giriş seviyesi EC2 instance ya da Elastic Beanstalk hakkı verir. Bu 1 hak içinde 3 adet projeyi yaşatmak için birkaç değişiklik gerekecekti.

Başlangıçta projenin 3 farklı öğesi, 3 ayrı proje şeklinde duruyordu:

  1. Websitesi: NodeJS uygulaması, arama motorları tarafından indexlenmesi gerektiği için EJS template engine kullanarak kimi yanıtları server tarafından vermemiz gerekebiliyordu.
  2. Panel: AngularJS Single Page App, sadece html, js ve css dosyalarından oluşan bu paneli, uygun url rewrite kurallarını kullanarak barındırmak gerekiyordu.
  3. API: Gene bir NodeJS uygulaması, içinde zamanlanmış görevleri yönetecek bir queue yapısı da bulunduğu için dikkatli bir şekilde deploy etmek gerekmekte.

Projem MEAN Stack tabanlı olduğu için API’yi, websitesini ve paneli tek bir uygulamada toplayabileceğimi düşündüm ve harekete geçtim.

İlk olarak, bütün bu projeleri kapsayacak ana bir NodeJS uygulaması yarattım. Bu proje, alt projeleri import ederek çalıştıracaktı. Ama bunu başarmak için, alt projelerde birkaç değişikliğe gitmek gerekmekte.

var express = require('express');
var app = express();
//sizin business flowunuz
//..
//..
exports.app = app;

Burada son satır önemli, çünkü bütün NodeJS uygulamasını bir modül olarak export ediyoruz. Şimdi artık, ana projede, aşağıdaki koda benzer bir yapı kullanarak, alt projelerimizi yaşatmaya başlayabiliriz. Doğru url’lere bağladıktan sonra hem çakışma ihtimali yok, hem de alt projelerdeki route’lar da sorunsuz çalışıyor.

var express = require('express');
var port = process.env.PORT || 3000;

express()
.use('/api', require('./api/app').app)
.use('/panel', express.static('./panel'))
.use('/', require('./site/app').app)
.listen(port);

Bu şekilde, sunucuya gelirken domain/api/* yaptığında api projesi, domain/panel/* yaptığında panel projesi, domain/* yaptığında ise websitesi çalışacaktır.

SPA olan panel projesini S3'e upload edip host edebilirdik, ama şöyle bir sıkıntı var ki, Amazonun sağladığı bedava SSL sadece Elastic Beanstalk için kullanılabiliyor. Çok da deal-breaker bir durum değil zaten.

Projeyi CodePipeline veya CodeShip gibi bir araçla deploy ettiğinizde alt projelerdeki dependency’lerin yüklenmediğini göreceksiniz. Bu durumu aşmak için ana projenin package.json dosyasına aşağıdaki satırı eklemeniz gerekiyor.

"scripts": {
"postinstall": "cd api && npm install && cd ../site && npm install"
}

Post install hook, kaynak kodlar git’ten alındıktan sonra çalışır ve burda alt projelerin dependencylerini yüklemek için komutlar çalıştırabiliriz.

İşte bu basit birkaç değişiklik ile tek bir Elastic Beanstalk instance’ında projeyi yaşatmayı başardım. Peki başlıkta 9 dolar diyordu, neden 9 dolar? MongoDB sunucusunu farklı bir yerde tutmamız gerektiği için paraya kıyıp(!) bir EC2 instance daha kiraladık, hem lokasyon olarak yakın hem de AWS’nin firewall özelliklerinden faydalanmak için.

Bunun dışında, Amazon’un sunduğu SES, SMS, S3, CDN ve SSL hizmetlerinin kotası da MVP süresince size rahat rahat yetecek kapasitede. Bir gün paralı tier’lara geçmeye karar verdiğinizde de, rakiplerinden bazı durumlarda daha ucuz.

MEAN Stack, genel olarak, fikirlerin prototiplenmesi için oldukça hızlı bir ortam sunduğu için girişimciler ve hevesliler tarafından tercih ediliyor. AWS’nin free tieri ise projenizin tüm dünyaya ulaşması için oldukça başarılı bir araç :)

Frontend Türkiye

Türkçe frontend kaynakları

)

Emre Yasin Çolakoğlu

Written by

Full Stack Web Developer from Istanbul / Turkey

Frontend Türkiye

Türkçe frontend kaynakları

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade