Emlakjet Java Spring Boot Bootcamp Final Project
Emlak İlan Sistemi Proje Konusu: Bir ilan sistemi için, ilan bilgilerini alıp ilan kaydı oluşturan, belli kriterlere göre ilan sorgulamalarının yapılabildiği restful bir uygulamanın Spring Boot framework kullanılarak yazılması Gereksinimler:
- Kullanıcıdan ad-soyad, telefon, email, password bilgileri alınarak, kullanıcı kaydı yapılmalıdır.
- Kaydedilen kullanıcının sisteme giriş yapabilmesi için bir authentication servisi bulunmalıdır.
- Sistemde kayıtlı bir yönetici kullanıcı olmalıdır.
- Kullanıcıların ilan kaydı oluşturabildiği ve güncelleyebildiği bir servis bulunmalıdır.
- İlan kaydı oluşturulduktan sonra veya güncellendikten sonra pasif olmalı, yönetici kullanıcı bu ilanı onaylamalı veya reddedebilmelidir. (Onay için servis bulunmalı bu servis yalnızca yönetici kullanıcı tarafından çalıştırılabilmelidir.)
- Oluşturulan ve onaylanan son 10 ilanı listeleyen bir servis olmalıdır.
- Yönetici için, pasif ilanların görüntülenebildiği bir servis olmalıdır. (Görüntülenen ilanları onaylayabilmek için ilan onay urlleri de döndürülebilir.)
- Onaylanan ilanlar message queue ya alınmalıdır.
- Message queue’daki ilanlar raporlama servisi tarafından alınarak her ilan için rapor oluşturulmalıdır. (“... ilanı … kullanıcısı tarafından … gün önce oluşturulmuştur. İlan … kere görüntülenmiştir.” Şeklinde bir metin oluşturulup veritabanına kaydedilebilir. Görüntülenme sayısı için ilan servisinden bilgi alınabilir. Görüntülenme sayısı her istekte bir artırılabilir. ”)
- Raporlama servisi rapor oluşturmak için bir api sunmalıdır. Ilan id ile istek yapıldığında oluşturulan rapor güncellenmelidir.
- Uygulama docker üzerinde çalışmalıdır.
- Uygulama mikroservis mimarisi ile gerçekleştirilmeli ve haberleşmede message broker
kullanılmalıdır.
-
Java (Programming Language)
-
Spring Boot (Application Platform)
-
Spring Data JPA (Data Persistance)
-
H2 Database
-
Swagger
-
RabbitMQ
-
Maven
-
Spring Security-Authentication (Keycloak)
-
Postman
-
JUnit ve Mockito (Unit Testing)
-
Docker ...future
- İlk etapta Discovery Server ayağa kaldırılır ve böylece Eureka yani bağlı olduğumuz microservislerin ayakta olanlarının portlarını rahat bir şekilde görebiliriz.
- İkinci olarak Api-Gateway ayağa kaldırılır ve biz bütün Security sistemimizi burası üzerinden yönetiriz. Security için OAuth2 ve Keycloack kullanmamız gereklidir. Keycloak ilk etapta terminalde
docker run -p 8181:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:18.0.2 start-dev
komutu ile açmamız gerekiyor. http://localhost:8181 üzerinden keycloack kısmına bağlanıp "defaul username" : "admin" / "defaul password" : "admin" olarak giriş yapılır. Arkasından yapılması gereken işlemler ilk etapta "realm" ismi oluşturup "Client" oluşturup Servisler kısmını "On" haline getirip daha sonra Token alıp diğer servislerimize postman üzerinden istek atabilmek adına bu tokenları kullanmayı sağlar. Aynı zamanda application.properties kısmına da token endpoint eklemesi yapılması gerekir. Adım adım fotoğraflar ektedir.
- Postman Üzerinde User oluşturup Console kısmında "Kullanıcı {id} ile kaydedildi" mesajı alındı