Modernizasyon ve danışmanlık

Legacy kod modernizasyonu

Eski PHP uygulamanızı baştan yazmadan, çalışır halde tutarak modern bir mimariye taşıyoruz. ONLINEKURUM'u da bu yöntemle taşıyoruz.

Yıllar içinde büyümüş PHP uygulamalarını baştan yazmadan, çalışır halde tutarak modern bir mimariye taşıyoruz. Aynı yöntemi kendi platformumuzda uyguluyoruz: ONLINEKURUM'un eski PHP çekirdeği Symfony 7.4 ve PHP 8.5'e taşınıyor. Bu sayfada eski bir uygulamaya nasıl yaklaştığımızı, hangi adımlarla ilerlediğimizi ve sonunda size neyi teslim ettiğimizi anlatıyoruz. Aşağıdaki kod örneği, tek bir sayfanın bu yolculukta nasıl değiştiğini gösteriyor.

Çözdüğümüz sorun

Eski bir PHP uygulaması çoğu zaman işini yapar, ama her değişiklik biraz daha zorlaşır. Kod eski bir PHP sürümüne bağlıdır, güvenlik güncellemeleri alınamaz, otomatik testi yoktur ve sistemi yalnızca birkaç kişi tanır. Küçük bir düzeltme beklenmedik bir yerde başka bir şeyi bozar ve ekip değişiklik yapmaktan çekinmeye başlar. PHP sürümünün desteği bittiğinde barındırma sağlayıcısı eski sürümü kaldırabilir ve uygulama bir gün aniden çalışmaz hale gelebilir. Baştan yazmak cazip görünür. Ama yeni sistem yetişene kadar eskisi de değişmeye devam eder ve yıllar içinde biriken iş kuralları yeniden yazım sırasında kaybolabilir. Önerimiz, sistemi durdurmadan parça parça yenilemektir. Her adımın sonunda canlıda çalışan bir uygulama ve ölçülebilir bir ilerleme olur. Yatırımın karşılığını projenin sonunu beklemeden görürsünüz.

Nasıl çalışıyoruz

  1. İnceleme

    Kodu, veritabanını ve sunucuyu inceliyor, riskleri ve öncelikleri yazılı olarak çıkarıyoruz.

  2. Güvence

    Kritik akışları testlerle kayıt altına alıyoruz. Neyin bozulmaması gerektiği netleşiyor.

  3. Kademeli taşıma

    Eski ve yeni kod bir süre yan yana çalışıyor, modüller tek tek yeni yapıya geçiyor.

  4. Devir

    Dokümantasyon, dağıtım adımları ve ekibinize aktarımla işi teslim ediyoruz.

siparis.php OrderController.php

- $sonuc = mysql_query("SELECT * FROM siparis WHERE id=" . $_GET['id']);
- $siparis = mysql_fetch_assoc($sonuc);
+ #[Route('/siparis/{id}', methods: ['GET'])]
+ public function show(int $id, OrderRepository $orders): Response
+ {
+     $order = $orders->find($id)
+         ?? throw $this->createNotFoundException();
+
+     return $this->render('pages/order/show.html.twig', [
+         'order' => $order,
+     ]);
+ }
SQL enjeksiyonuna açık bir sorgu, tipli ve test edilebilir bir controller'a dönüşüyor. Adres aynı kalıyor, kullanıcı farkı görmüyor.

Teslim ettiklerimiz

  • Riskleri ve öncelikleri gösteren yazılı inceleme raporu
  • Kritik akışları koruyan otomatik testler
  • Modüller halinde taşınmış, güncel PHP sürümünde çalışan uygulama
  • Dokümantasyon, dağıtım adımları ve ekibinize devir
  • Taşınan her modül için önce ve sonra karşılaştırması

İlgili referanslar

  • Platformumuz

    ONLINEKURUM.COM

    Ürünlerimizin tanıtıldığı ve satıldığı web sitesi, CRM, blog ve satış platformu. Eski PHP çekirdeği Symfony 7.4 ve PHP 8.5'e taşınıyor.

Tüm referanslar

Sık sorulan sorular

Uygulamamızı baştan yazmak daha mantıklı olmaz mı?

Bazen olur, ama çoğu durumda riskli ve pahalıdır. Yeniden yazım sürerken eski sistem de değişmeye devam eder ve iki sistemi birden yürütmek gerekir. Kademeli taşımada her adım canlıda çalışır ve yatırımın karşılığı adım adım görülür. İnceleme raporunda hangi yolun sizin için uygun olduğunu gerekçesiyle yazıyoruz.

Taşıma sırasında sistem kapanacak mı?

Hayır. Eski ve yeni kod bir süre yan yana çalışır, adresler aynı kalır ve kullanıcılarınız farkı görmez. Bir modül yeni yapıya geçmeden önce testlerle doğrulanır. Bir sorun çıkarsa o modül eski haline döndürülebilir.

Hangi PHP sürümlerinden taşıma yapıyorsunuz?

PHP 5 ve PHP 7 ile yazılmış uygulamaları PHP 8'e taşıyoruz. Hedef mimari olarak Symfony öneriyoruz. Mevcut uygulamanın yapısına göre, kodun önce güncel PHP sürümünde çalışır hale getirilmesi ve testlerle korunması ayrı bir ilk adım olabilir. Bu karar inceleme raporunda gerekçesiyle yer alır.

Taşıma süresince yeni özellik geliştirebilir miyiz?

Evet. Kademeli taşımanın avantajlarından biri budur: iş durmaz. Yeni özellikleri mümkün olduğunca doğrudan yeni yapıda geliştiriyoruz. Böylece her yeni özellik taşınması gereken eski kodu artırmak yerine azaltıyor. Acil bir düzeltme eski kodda gerekiyorsa onu da aynı testlerle koruyarak yapıyoruz.

İnceleme ne kadar sürer ve sonunda ne alırız?

İncelemenin süresi uygulamanın büyüklüğüne göre değişir ve başlamadan önce yazılı olarak belirlenir. Sonunda kodun, veritabanının ve sunucunun durumunu, riskleri ve önerilen taşıma sırasını anlatan yazılı bir rapor alırsınız. Rapor kendi başına da işe yarar: taşımayı bizimle ya da başka bir ekiple yapmaya karar verebilirsiniz.

İlgili hizmetler

  • Yazılım danışmanlığı

    Mimari, teknoloji seçimi ve kod kalitesi için karar vermeden önce ikinci bir göz.

  • DevOps

    Geliştirmeden canlıya giden yolu otomatikleştiriyor, sunucularınızı izlenebilir ve yedekli hale getiriyoruz.

Sisteminizi birlikte inceleyelim

Ne yapmak istediğinizi birkaç cümleyle anlatın. İhtiyacınızı inceleyip nasıl ilerleyebileceğimizi size yazalım.