Serkan Yaşar

Serkan Yaşar

AI | ML Developer

Back-End Developer

Data Scientist
📋

Professional Experience

  • Coşkunöz Holding 📍 Bursa, Türkiye

    Software Developer 🗓️ 2022 - Present

    • Developed and deployed AI-powered solutions in industrial settings, focusing on Generative AI, LLMs, Computer Vision, and Machine Learning to optimize production workflows and quality control.
    • Designed and implemented RAG pipelines using Vektor databases for intelligent document retrieval and domain-specific knowledge integration.
    • Designed and deployed LLM orchestration pipelines with LangChain, CrewAI, and n8n, integrating MCP tools to power intelligent chatbots, document Q&A systems, and AI assistants via Streamlit.
    • Applied LoRA and other parameter-efficient fine-tuning techniques for domain-adapted LLM enhancements.
    • Designed and deployed automated quality inspection systems using YOLO, OpenCV, OCR, and PyTorch, reducing manual checks and improving accuracy by up to 95%.
    • Created AI systems that enabled forklift-human collision detection, resulting in a 90% reduction in workplace accidents, awarded in the MESS Occupational Safety Stars Competition.
    • Built operator monitoring systems that prevented faulty products, winning Tofaş Best Kaizen Award, TİSK Digitalization Award, and Ministry of Industry and Technology Productivity Project Award.
    • Developed edge AI systems on Jetson Nano and Raspberry Pi, enabling low-latency inference for real-time industrial scenarios.
    • Implemented microservices with FastAPI, Django, and .NET Core, and managed API integration and deployment using Docker and CI/CD pipelines.
    • Integrated IoT sensor data and PLC communication (e.g., snap7) for fault detection and signal processing in live production environments.
    • Leveraged SQL, NoSQL, and ORM frameworks to manage complex data flows and enable real-time dashboards via Power BI, Tableau, and Grafana.
    • Used RPA (Robotic Process Automation) to streamline document processing workflows, achieving annual savings of €11,000.
    • Conducted large-scale data processing using Apache Spark, Hadoop, and Kafka, with real-time visualization.
    • Experienced in prompt engineering, LLM model evaluation, and staying up to date with multi-agent architectures, hybrid search, and AI trends.
    • Experienced in leading cross-functional teams and collaborating across departments to deliver end-to-end AI solutions in production environments.
🎓

Education

  • Bursa Technical University 📍 Bursa, Türkiye

    BSc in Mechanical Engineering 🗓️ 2018 - 2023

    • Graduated with GPA 2.97. TEKNOFEST participant with HACİWATT team.
  • Istanbul University 📍 Istanbul, Türkiye

    Associate Degree in Computer Programming 🗓️ 2022 - 2024

    • Focus on software development, backend, databases, and algorithms.
    • Expected graduation with GPA 2.8.
🏅

Certifications

WebAPI : Katmanlı Mimari Tasarımı(NTier)





Katmanlı mimari nedir ve yazılım dünyasında neden bu kadar yaygın olarak tercih ediliyor? Bu mimarinin sunduğu avantajlar nelerdir?

Katmanlı Mimari

Günlük yaşamda, iş ve özel hayat gibi farklı alanları birbirinden ayırmak ve her alanı kendi dinamikleri içerisinde değerlendirmek yaygın bir yaklaşımdır. Benzer şekilde, yazılım geliştirme süreçlerinde de farklı işlevlerin birbirinden bağımsız olarak ele alınması, sistemin daha esnek ve yönetilebilir olmasını sağlar. Katmanlı mimari, bu ayrımı teknik anlamda gerçekleştiren bir yapı sunar.

Bu mimari modelde, her bir katman kendi sorumluluğunu üstlenir ve diğer katmanlardan bağımsız çalışır. Bu sayede, bir katmanın yaptığı değişiklikler diğer katmanları etkilemez, böylece sistemin her bir parçası esnek, test edilebilir ve sürdürülebilir hale gelir. Katmanların birbirine zayıf bağlı olması, sistemin daha kolay yönetilmesini ve geliştirilmesini mümkün kılar.

Web API Nedir?

Günlük hayatta farklı hizmetleri kullanabilmek için çeşitli arayüzlerle karşılaşırız. Örneğin, bir banka şubesine giderek işlemlerimizi bir görevli aracılığıyla yaparız. Görevli, bizim taleplerimizi alır, arka plandaki sistemlere bağlanır ve istediğimiz işlemi gerçekleştirir. Biz sadece görevliye ne yapmamız gerektiğini söyleriz, arka plandaki karmaşık süreçlerle ilgilenmeyiz.

Web API (Application Programming Interface) de benzer şekilde çalışır. API, bir uygulamanın başka bir uygulamayla veya sistemle iletişim kurabilmesi için bir arayüz sunar. Kullanıcı veya istemci tarafı, API’ye bir istek gönderir ve API, bu isteği arka plandaki sistemlere yönlendirir. Verilen yanıtı alarak istemciye geri döner. Bu süreçte, istemci tarafı, arka planda neler olup bittiğini bilmeden sadece istediği sonuçlara ulaşır.

Web API’ler, farklı platformlar ve uygulamalar arasında veri paylaşımını ve iletişimi sağlayarak sistemler arası entegrasyonu kolaylaştırır. Bu sayede, yazılımlar arası veri alışverişi, işlev çağrıları gibi işlemler hızla gerçekleştirilir ve kullanıcılar karmaşık işlemlerden soyutlanmış olur.

Şimdi, adım adım bir Web API’yi katmanlı mimari kullanarak nasıl tasarlayabileceğimizi inceleyelim.

Yukarıdaki şemada, Web API’nin katmanlı mimari yapısını ve nasıl çalıştığını görebiliriz. Bu mimari, arka uç (back-end) sistemlerini daha düzenli bir şekilde yapılandırmamıza yardımcı olur.

Arka Uç Sistem (Back-end System)

Arka uç sistemimizde dört ana katman bulunuyor:

  1. Varlık (Entity) Katmanı:
    Varlık katmanı, uygulamanın temel veri yapılarıyla ilgilenir. Bu katmanda, veritabanındaki tabloları temsil eden sınıflar tanımlanır. Örneğin, bir kullanıcı nesnesi için “User” sınıfı oluşturabiliriz. Bu sınıf, kullanıcının özelliklerini (isim, e-posta, şifre vb.) ve bu verilere yönelik işlemleri tanımlar. Varlık katmanı, sistemin veri modelinin kalbidir ve veri bütünlüğünü sağlamak için dikkatlice tasarlanmalıdır.
  2. Depo (Repositories) Katmanı:
    Repository katmanı, veriye erişim ve yönetim işlevlerini üstlenir. Bu katman, Varlık katmanındaki sınıflar ile veritabanı arasındaki köprüyü kurar. Repository’ler, CRUD (Create, Read, Update, Delete) işlemlerini gerçekleştirmek için özel yöntemler içerir. Örneğin, bir kullanıcı kaydetmek veya güncellemek için “AddUser” veya “UpdateUser” gibi yöntemler tanımlanabilir. Bu yapı sayesinde, veriye erişim işlevselliği merkezi bir noktada toplanır ve kolayca yönetilir.
  3. Servis (Service) Katmanı:
    Servis katmanı, iş mantığını barındırır. Bu katman, Repository katmanından gelen verileri alır ve belirli kurallara göre işler. Örneğin, kullanıcı kaydı yaparken, kullanıcının e-posta adresinin benzersiz olup olmadığını kontrol eden bir yöntem geliştirebiliriz. Servis katmanı, uygulamanın iş süreçlerini ve mantığını tanımladığı için, kodun geri kalanıyla olan bağımlılıkları azaltarak esnek bir yapı sunar. Ayrıca, servis katmanında birden fazla Repository ile etkileşimde bulunarak karmaşık işlemleri gerçekleştirebiliriz.
  4. Sunum (Presentation) Katmanı:
    Sunum katmanı, sistemin dışarıya açılan kapısını temsil eder. API’lar bu katmanda yer alır ve istemcilerin veri alıp göndermesine olanak tanır. Bu katmanda, HTTP isteklerine yanıt veren yöntemler tanımlanır. Örneğin, bir kullanıcı kaydı için bir “POST /users” API’si oluşturabiliriz. Sunum katmanı, istemcilerin (web veya mobil uygulamalar) arka uç sistemle etkileşimde bulunduğu yerdir. Bu katman, verileri kullanıcıya sunarken, kullanıcıdan gelen istekleri ilgili servislere yönlendirir.

Katmanlar Arası İletişim

Katmanlı mimaride, her katmanın kendi işlevi olmasına rağmen, bu katmanlar arasında etkili bir iletişim sağlamak kritik bir öneme sahiptir. İşte bu sürecin adımları:

  1. Sunum Katmanı ile Servis Katmanı

Presantation katmanı, kullanıcıdan gelen talepleri alır ve Service arayüzü ile veri arasında bir köprü görevi görür. Örneğin, kullanıcı kaydı işlemi sırasında, sunum katmanı UserService.CheckContext metodunu çağırır. Bu aşamada, kullanıcıdan alınan verilerin geçerliliğini kontrol etmek önemlidir. Örneğin, e-posta adresinin formatının doğru olup olmadığını veya gerekli alanların boş olup olmadığını kontrol ederiz. Eğer kullanıcı e-posta adresini yanlış girerse, bu durumu kullanıcıya iletecek bir hata mesajı döndürülür; örneğin, “Geçersiz e-posta formatı” şeklinde bir geri bildirim verilir.

Burada dikkat edilmesi gereken bir diğer nokta, kullanıcıdan alınan verilerin güvenliği ve doğruluğudur. Örneğin, kullanıcı isteklerini kontrol etmek için gerekli önlemler alınmadığında SQL enjeksiyonu gibi güvenlik açıklarına neden olabilecek durumlar ortaya çıkabilir. Bu nedenle, sunum katmanında kullanıcıdan alınan tüm veriler üzerinde doğrulama ve sanitasyon işlemleri yapılmalıdır.

2. Servis Katmanı ile Repository Katmanı

Servis katmanı, iş mantığını yöneten ve tüm iş kurallarının uygulandığı katmandır. Diyagramda, UserService.AddUser(user)metodu bir kullanıcının sisteme eklenme sürecini başlatır. Ancak, bu işlemi gerçekleştirmeden önce, UserManager.CheckUserExistmetodu kullanıcının daha önce sisteme kayıtlı olup olmadığını kontrol eder. Eğer kullanıcı sistemde mevcutsa, işlem sonlandırılır ve kullanıcının zaten var olduğuna dair bir geri bildirim sağlanır: “Bu kullanıcı zaten sistemde kayıtlı.”

Eğer kullanıcı mevcut değilse, servis katmanı UserRepository.AddUser(user)metodunu çağırarak repository katmanına veri gönderir. Repository katmanı, varlık katmanı ile doğrudan etkileşimde bulunur ve veritabanı işlemlerini gerçekleştirir.

3. Repository Katmanı ile Varlık Katmanı

Repository katmanı, varlık katmanındaki sınıflarla etkileşimde bulunarak veri işlemlerini gerçekleştirir. Örneğin, UserRepository.AddUser(User) metodu, varlık katmanındaki User nesnesini alır ve veritabanına kaydeder. Bu aşamada, User nesnesinin doğru şekilde yapılandırıldığından emin olmak önemlidir. Veritabanına kaydedilecek verilerin doğruluğu, sistemin güvenilirliğini artırır.

Eğer varlık katmanındaki nesne eksik veya hatalı bir bilgi içeriyorsa, veritabanına kaydedilme süreci başarısız olabilir. Repository katmanı bu durumu yakalamalı ve servis katmanına iletmelidir. Kullanıcıya verilecek hata mesajı, durumu açıklayıcı olmalıdır; örneğin, “Kullanıcı bilgileri eksik” veya “Kullanıcı kaydı başarısız” gibi ifadelerle kullanıcı bilgilendirilmelidir.

Bu akış, katmanların birbirine bağımlılığını en aza indirirken, kodun test edilebilirliğini ve sürdürülebilirliğini artırır. Ayrıca, her katmanın kendi sorumluluğuna odaklanarak hata ayıklama sürecini kolaylaştırır.

Örnek WebAPI Katmanlı Mimari tasarımı Github Repomdan ulaşabilirsiniz : https://github.com/serkanyasr/WebAPI-NTier-Architecture