Ana içeriğe geç

Gelişmiş

Veritabanı entegrasyonu

Herhangi bir web framework'ü gibi, tinyhttp de veritabanlarıyla iyi çalışır. MongoDB, Fauna, Postgres ve diğerleri dahil olmak üzere veritabanı entegrasyonu için birçok örnek bulunmaktadır.

Örnek

Öncelikle veritabanınız için bir istemci başlatmalısınız. Daha sonra bunu middleware içinde sorguları yürütmek için kullanabilirsiniz.

MongoDB ile basit bir örnek:

import { App } from '@tinyhttp/app'
import * as dotenv from '@tinyhttp/dotenv'
import { urlencoded as parser } from 'milliparsec'
import mongodb from 'mongodb'
import assert from 'assert'

dotenv.config()

const app = new App()

let db
let coll

// Mongo istemcisi oluştur
const client = new mongodb.MongoClient(process.env.DB_URI, {
useUnifiedTopology: true,
})

// MongoDB'ye bağlan
client.connect(async (err) => {
assert.notStrictEqual(null, err)
console.log('MongoDB\'ye başarıyla bağlandınız')
db = client.db('notes')
coll = db.collection('notes')
})

app
.get('/notes', async (_, res, next) => {
const r = await coll.find({}).toArray()
res.send(r)
next()
})
.use('/notes', parser())
.post('/notes', async (req, res, next) => {
const { title, desc } = req.body
const r = await coll.insertOne({ title, desc })
assert.strictEqual(1, r.insertedCount)
res.send(`Başlık olarak "${title}" olan not eklendi`)
})
.listen(3000)

Dağıtım

tinyhttp'yi dağıtmanın birçok yolu vardır. Sunucusuz bir platform, bir VPS veya Node.js çalışma zamanı olan başka herhangi bir şeyi kullanabilirsiniz. En yaygın yolları inceleyecek ve bunları detaylandıracağız.

Sunucusuz

Sunucusuz için, herhangi bir sunucusuz platform seçebilirsiniz. İşte bazı popüler platformların bir tablosu:

PlatformÜcretsiz
HerokuHayır
Vercel (Lambda)Evet
AWSEvet (bir yıl)
RenderEvet
DetaEvet
ipucu

tinyhttp deposunda Vercel ve AWS örneklerine göz atabilirsiniz.

tinyhttp'yi dağıtmak için başka iyi sunucusuz platformlar biliyorsanız, dökümana PR yapmaktan çekinmeyin.

Kendinize Ait Sunucu

Kendinize ait sunucu kullanarak yükleyebileceğiniz bir dizi sunucusuz dağıtım aracı bulunmaktadır:

Araç
Exoframe

Özel

Özelleştirilmiş dağıtımları tercih ediyorsanız, bir CI/CD hizmeti, işlem yöneticisi ve bir web sunucusunun (veya sadece birinin) kombinasyonunu kullanmayı deneyebilirsiniz.

CI/CD

CI/CDÜcretsiz
Github ActionsEvet
TravisEvet

Herhangi bir CI, tinyhttp için işe yarar çünkü herhangi bir limit koymaz.

İşlem yöneticileri / birim sistemleri

PM / Birim sistemiÇapraz platformYük dengeleyici dahili
PM2EvetEvet
systemdHayırHayır
z1EvetEvet
ForeverEvetEvet
tehlike

Kural olarak, hedef sunucu Linux üzerinde çalışır. Tüm ana dağıtımlar systemd içerir. tinyhttp uygulamanız için bir hizmet oluşturmak için bunu kullanabilirsiniz.

Node.js için en popüler işlem yöneticisi PM2. İçinde dahili bir kümeleme özelliği ile bu yüzden uygulamanızı çoklu işlem yapmak çok kolaydır. Ancak, clustering için pm2 kullanmak zorunlu değildir. Bunu dahili cluster modülünü kullanarak da yapabilirsiniz. Daha fazla bilgi için cluster örneğine göz atın.

Web sunucuları

Bir web sunucusu, 3000 (veya herhangi başka bir) porttan 80 HTTP portuna ters proxy olarak kullanılması yaygındır. Bir web sunucusu ayrıca yük dengeleme için kullanılabilir.

Web sunucusuYük dengeleyici dahiliDokümanlar
nginxEvetNGINX ile Node.js Uygulama Sunucularını Yük Dengeleme
CaddyEvetCaddy Ters Proxy

Docker

Docker, bir Node.js uygulamasını bir konteynerde çalıştırmak için birçok görüntü sunar. En popüler görüntülerden biri nodedir.

Docker ile bir Express / Node.js uygulaması dağıtma konusunda makaleler bulunmaktadır. tinyhttp'yi dağıtmak için bu eğitici kaynakları kullanabilirsiniz.