Proxy pattern Bir obyekti temsil eden bashqa bir obyekt nezerde tutulur bu patternde. Her hansi bir tehlukesizliyin qarshisi alinmir, sadece Proxy uzerinden lazim olan obyekte chatiriq ve bu cache sistemi ile gedir. Tutaq ki, DB ya qoshulmaq uchun uzun bir vaxt teleb eden configrationlardan ibaret olan class var: HeavyConnector. Normalda bu classdan obyekt yaradan kimi bu DB ile elaqe hal hazirda lazim oldu ve ya olmadi yaranir. Bu da proyektin gec ishlemesine sebeb ola biler. Buna gore Proxy anlayishindan istifade olunur. Artiq Connector interface den istifade edib, polimorfizme gore ProxyConnector classinin obyektini yaradib Connector obyektine set ede bilerik. Connector connector = new ProxyConnector(); bu setirde yalniz ProxyConnector obyekti yaranacaq. heavyConnect metodu hele cagrilmayib. Yalniz connector.connect(); dedikden sonra HeavyConnector classinin obyekti yaranacaq ve constructor vasitesile bu metod cagrilacaq.
Mikroservisleri tercih etmek uchun 4 esas sebeb var : Scalability Bu ozellik monolit application da da mumkundur. Horizontal ve Vertical Scalability: - Horizontal, Serverimiz tutaq ki , 4gb ram da ishleyir. Hal hazir ki veziyyete gore uygun olsada musteri sayi artandan sonra serverin ramini artira bilerik. Lakin bunun bir limiti vardir. (diger paratmetrlerde daxilidr, cpu, harddrive). Yeni horizontal - sistemi guclendirmek basha dushulur. Burada limit oldugundan , sonradan yeni sistem alinmalidir, lakin server yalniz bir komputer olmalidir. - Vertical, burada yaradilan servisin kopyasini yaratmaq basha dushulur. Esasen mikroservis arxitekturasinda istifade olunur. Meselen Account Service 1000 sorgu emal ede bilirse, bu servisin kopyasi da 1000 sorgu emal edecek. Bu mikroservis oluduguna gore ishletdiyi ram daha az olacaqdir (ve ya diger parametrler) Burada servislerin kopyasini avtomatik yaradilmasini temin eden sistemler var ki, bunlara misal olaraq Kubernetes, Rancher ve ya cust...
Project : Github Unit Testing , Integration Testing and Functional Testing 0. Proyekteki butun classlari test etmek , yeni konkret olaraq db ile ishleyen classlari test etmek Unit Testing adlanir. Yeni Proyektdeki butun komponentler bir biri ile duzgun ishleye bilirmi ? Meselen UserServiceImpl istifade olunursa ve daxilinde UserDataInter obyekti varsa ve esl data ile ishlemirse, bu Unit Testing adlanir. 1. Integration Testing - Unit Testingdir. Sadece burada esl data ile ishleyir. Lazim olan annotationlar : @RunWith - Spring Context i ishe salir @SpringBootTest @DataJpaTest - Test muhitinde DB ya qoshulmagimiza imkan yaradir Autowired istifade olunur. 2. Functional Testing api uchun yazilmish testing sayilir. Meselen yazilan api uchun bir client tool yazilir ve sorgularla muraciet olunaraq neticeler muqayise olunur. TDD - Test Driven Development Testler yazilandan sonra uygun servis ve ya classlar yazilir BDD - Behaviour Driven Development Koddan anlayishi o...