Cleomar Pestilli

1.1K posts

Cleomar Pestilli

Cleomar Pestilli

@cleomarpestilli

Sรฃo Paulo Sumali Mayฤฑs 2013
1K Sinusundan67 Mga Tagasunod
Dr Milan Milanoviฤ‡
Dr Milan Milanoviฤ‡@milan_milanovicยท
๐—ช๐—ต๐—ฎ๐˜ ๐—ถ๐˜€ ๐—ข๐—ป๐—ถ๐—ผ๐—ป ๐—”๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ? Onion Architecture was first introduced by Jeffrey Palermo in his 2008 article "๐—ง๐—ต๐—ฒ ๐—ข๐—ป๐—ถ๐—ผ๐—ป ๐—”๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ." The article presented an architectural pattern emphasizing the ๐˜€๐—ฒ๐—ฝ๐—ฎ๐—ฟ๐—ฎ๐˜๐—ถ๐—ผ๐—ป ๐—ผ๐—ณ ๐—ฐ๐—ผ๐—ป๐—ฐ๐—ฒ๐—ฟ๐—ป๐˜€ and the independence of the application's core business logic from the surrounding infrastructure. This approach promotes ๐—บ๐—ผ๐—ฑ๐˜‚๐—น๐—ฎ๐—ฟ๐—ถ๐˜‡๐—ฎ๐˜๐—ถ๐—ผ๐—ป and helps to reduce complexity, making it easier to understand and change the application over time. The Onion Architecture is similar to ๐—Ÿ๐—ฎ๐˜†๐—ฒ๐—ฟ๐—ฒ๐—ฑ ๐—”๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ, but with a key difference: ๐˜๐—ต๐—ฒ ๐—ฑ๐—ถ๐—ฟ๐—ฒ๐—ฐ๐˜๐—ถ๐—ผ๐—ป ๐—ผ๐—ณ ๐—ฑ๐—ฒ๐—ฝ๐—ฒ๐—ป๐—ฑ๐—ฒ๐—ป๐—ฐ๐—ถ๐—ฒ๐˜€. In traditional layered architectures, dependencies flow downward from higher to lower layers. In the Onion Architecture, dependencies flow inward toward the application's core. It also builds on ๐˜๐—ต๐—ฒ ๐—›๐—ฒ๐˜…๐—ฎ๐—ด๐—ผ๐—ป๐—ฎ๐—น ๐—”๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ, by placing the domain layer in the center of the application and externalizing UI and external systems. The ๐——๐—ผ๐—บ๐—ฎ๐—ถ๐—ป ๐—Ÿ๐—ฎ๐˜†๐—ฒ๐—ฟ contains the business logic and entities of the application. It does not depend on any other layer, making it the most stable and least likely to change. Surrounding the Domain Layer are layers that depend on it, such as the Application Layer, which contains the use cases and application-specific logic, and the Infrastructure Layer, which contains the implementation details for technologies such as databases, user interfaces, and external services. ๐—ž๐—ฒ๐˜† ๐—ฏ๐—ฒ๐—ป๐—ฒ๐—ณ๐—ถ๐˜๐˜€ ๐—ผ๐—ณ ๐—ข๐—ป๐—ถ๐—ผ๐—ป ๐—”๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ are: ๐Ÿ”น The application is built around an ๐—ถ๐—ป๐—ฑ๐—ฒ๐—ฝ๐—ฒ๐—ป๐—ฑ๐—ฒ๐—ป๐˜ ๐—ผ๐—ฏ๐—ท๐—ฒ๐—ฐ๐˜ ๐—บ๐—ผ๐—ฑ๐—ฒ๐—น ๐Ÿ”น Inner layers ๐—ฑ๐—ฒ๐—ณ๐—ถ๐—ป๐—ฒ ๐—ถ๐—ป๐˜๐—ฒ๐—ฟ๐—ณ๐—ฎ๐—ฐ๐—ฒ๐˜€. Outer layers ๐—ถ๐—บ๐—ฝ๐—น๐—ฒ๐—บ๐—ฒ๐—ป๐˜ ๐—ถ๐—ป๐˜๐—ฒ๐—ฟ๐—ณ๐—ฎ๐—ฐ๐—ฒ๐˜€ ๐Ÿ”น The direction of the coupling is ๐˜๐—ผ๐˜„๐—ฎ๐—ฟ๐—ฑ ๐˜๐—ต๐—ฒ ๐—ฐ๐—ฒ๐—ป๐˜๐—ฒ๐—ฟ ๐Ÿ”น All application core code can be compiled and run ๐˜€๐—ฒ๐—ฝ๐—ฎ๐—ฟ๐—ฎ๐˜๐—ฒ๐—น๐˜† ๐—ณ๐—ฟ๐—ผ๐—บ ๐˜๐—ต๐—ฒ ๐—ถ๐—ป๐—ณ๐—ฟ๐—ฎ๐˜€๐˜๐—ฟ๐˜‚๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ Check the link to the original article in the comments. #softwarearchitecture
Dr Milan Milanoviฤ‡ tweet media
English
7
47
209
23.4K
Dr Milan Milanoviฤ‡
Dr Milan Milanoviฤ‡@milan_milanovicยท
๐—ง๐—ผ๐—ฝ ๐Ÿญ๐Ÿฌ ๐—”๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฎ๐—น ๐—ฃ๐—ฎ๐˜๐˜๐—ฒ๐—ฟ๐—ป๐˜€ ๐—ฆ๐—ผ๐—ณ๐˜๐˜„๐—ฎ๐—ฟ๐—ฒ ๐—ฎ๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ is the process of designing the structure and behavior of a software system, which includes making decisions about components, modules, interfaces, and the system's organization. ๐—ฆ๐—ผ๐—ณ๐˜๐˜„๐—ฎ๐—ฟ๐—ฒ ๐—ฎ๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ ๐—ฝ๐—ฎ๐˜๐˜๐—ฒ๐—ฟ๐—ป๐˜€ are important because they provide reusable solutions to common problems in software design. They capture best practices and proven solutions for designing reliable, scalable, maintainable, and extensible software systems. There are many software architecture design patterns to know, but some of the most important ones are: ๐Ÿญ. ๐—Ÿ๐—ฎ๐˜†๐—ฒ๐—ฟ๐—ฒ๐—ฑ ๐—”๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ: This pattern is based on dividing the application into logical layers, where each layer has a specific responsibility and interacts with the layers above and below it. ๐Ÿฎ. ๐— ๐—ถ๐—ฐ๐—ฟ๐—ผ๐˜€๐—ฒ๐—ฟ๐˜ƒ๐—ถ๐—ฐ๐—ฒ๐˜€ ๐—”๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ: This pattern is based on decomposing the application into small, independent services that communicate through well-defined APIs. ๐Ÿฏ. ๐—˜๐˜ƒ๐—ฒ๐—ป๐˜-๐——๐—ฟ๐—ถ๐˜ƒ๐—ฒ๐—ป ๐—”๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ: This pattern uses events to communicate between different components or services, where events trigger actions or reactions in the system. ๐Ÿฐ. ๐—ฆ๐—ฝ๐—ฎ๐—ฐ๐—ฒ-๐—ฏ๐—ฎ๐˜€๐—ฒ๐—ฑ ๐—ฎ๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ (๐—ฆ๐—•๐—”): is a software design method that centers the system's structure around the idea of "spaces," which are independent and autonomous units. ๐Ÿฑ. ๐— ๐—ถ๐—ฐ๐—ฟ๐—ผ๐—ธ๐—ฒ๐—ฟ๐—ป๐—ฒ๐—น ๐—ฎ๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ: this is an approach where the kernel provides minimal functionality and services are implemented as separate modules outside the kernel. ๐Ÿฒ. ๐—ฃ๐—ฒ๐—ฒ๐—ฟ ๐˜๐—ผ ๐—ฃ๐—ฒ๐—ฒ๐—ฟ ๐—ฎ๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฎ๐—น ๐—ฝ๐—ฎ๐˜๐˜๐—ฒ๐—ฟ๐—ป: This is a decentralized model in which nodes in a network can act as both clients and servers, allowing for the distributed sharing of resources and information without the need for a central authority. ๐Ÿณ. ๐—–๐—น๐—ผ๐˜‚๐—ฑ ๐—ป๐—ฎ๐˜๐—ถ๐˜ƒ๐—ฒ ๐˜€๐—ผ๐—ณ๐˜๐˜„๐—ฎ๐—ฟ๐—ฒ ๐—ฎ๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ: this is a pattern where applications are developed and deployed to run on cloud platforms, leveraging cloud services and infrastructure for scalability, reliability, and agility. ๐Ÿด. ๐—–๐—ค๐—ฅ๐—ฆ (๐—–๐—ผ๐—บ๐—บ๐—ฎ๐—ป๐—ฑ ๐—ค๐˜‚๐—ฒ๐—ฟ๐˜† ๐—ฅ๐—ฒ๐˜€๐—ฝ๐—ผ๐—ป๐˜€๐—ถ๐—ฏ๐—ถ๐—น๐—ถ๐˜๐˜† ๐—ฆ๐—ฒ๐—ด๐—ฟ๐—ฒ๐—ด๐—ฎ๐˜๐—ถ๐—ผ๐—ป): This pattern separates the command and query responsibilities of an application's model, making it easier to scale and optimize the application. ๐Ÿต. ๐—›๐—ฒ๐˜…๐—ฎ๐—ด๐—ผ๐—ป๐—ฎ๐—น ๐—”๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ: This pattern separates the application into an inner and outer layer, where the inner layer contains the business logic and the outer layer contains the interfaces with the outside world. ๐Ÿญ๐Ÿฌ. ๐—–๐—น๐—ฒ๐—ฎ๐—ป ๐—”๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ: This pattern emphasizes separating concerns and decoupling components, making it easier to maintain and change an application over time. #softwarearchitecture
Dr Milan Milanoviฤ‡ tweet media
English
5
134
567
31.8K
Cleomar Pestilli nag-retweet
Java Guides
Java Guides@GuidesJavaยท
Kafka in one image:
GIF
3
163
654
39.8K
Cleomar Pestilli nag-retweet
Nelson Djalo | Amigoscode
Nelson Djalo | Amigoscode@AmigosCodeยท
Software Development Process and Tools Overview 1. Idea Conception: The initial phase where the concept for a software project is conceived and outlined. 2. Requirements Gathering: Involves collecting and documenting the functional and non-functional requirements for the software. 3. Design and Planning: Creating the architecture and planning the development process based on the gathered requirements. 4. Software Development: The actual coding and implementation of the software based on the design and plan. 5. Continuous Integration and Testing: Regularly integrating code changes and performing automated testing to ensure software quality. 6. Deployment to Staging: Deploying the software to a staging environment for further testing and validation. 7. User Acceptance Testing (UAT): Allowing end-users to test the software to ensure it meets their expectations and requirements. 8. Deployment to Production: Releasing the software to the live production environment for public use. 9. Monitoring and Incident Response: Continuous monitoring of the production environment, with immediate response to any incidents or issues. 10. Post-Production Iteration and Scaling: Making improvements to the software based on user feedback and scaling the system to handle increased load or demand. Poster made in ๐Ÿค collaboration with Abdullateef Lawal ๐Ÿ‘๐Ÿฟ Subscribe to our newsletter - bit.ly/45ucZPf #systemdesign #coding #interviewtips
GIF
English
1
166
493
22K
Cleomar Pestilli nag-retweet
Milan Jovanoviฤ‡
Milan Jovanoviฤ‡@mjovanovictechยท
Here are 3 tips for managing exceptions in C#: ๐Ÿญ. ๐—จ๐˜€๐—ฒ ๐—ฎ ๐—ด๐—น๐—ผ๐—ฏ๐—ฎ๐—น ๐—ฒ๐˜…๐—ฐ๐—ฒ๐—ฝ๐˜๐—ถ๐—ผ๐—ป ๐—ต๐—ฎ๐—ป๐—ฑ๐—น๐—ฒ๐—ฟ Unhandled exceptions could crash your application. And you don't want that, do you? So, you should use a global exception handler. In ASP .NET Core, you can add a custom middleware. And in .NET 8, you can use the new IExceptionHandler. ๐Ÿฎ. ๐—ง๐—ต๐—ฒ ๐—ฝ๐—ฟ๐—ผ๐—ฝ๐—ฒ๐—ฟ ๐˜„๐—ฎ๐˜† ๐˜๐—ผ ๐—ฟ๐—ฒ๐˜๐—ต๐—ฟ๐—ผ๐˜„ ๐—ฒ๐˜…๐—ฐ๐—ฒ๐—ฝ๐˜๐—ถ๐—ผ๐—ป๐˜€ Sometimes, you need to rethrow the exception you just caught. If you try to throw the exception instance, you will rewrite the stack trace. Why is this bad? Because you'll lose valuable information about the original exception. ๐Ÿฏ. ๐—ฃ๐—ฟ๐—ฒ๐—ณ๐—ฒ๐—ฟ ๐˜‚๐˜€๐—ถ๐—ป๐—ด ๐˜€๐—ฝ๐—ฒ๐—ฐ๐—ถ๐—ณ๐—ถ๐—ฐ ๐—ฒ๐˜…๐—ฐ๐—ฒ๐—ฝ๐˜๐—ถ๐—ผ๐—ป๐˜€ I'm not saying you should use exceptions for business logic. But, if you are, at least do it right. ๐Ÿ‘‡ And prefer using specific exceptions. Otherwise, consider using a result object if you have "expected exceptions." P.S. If you liked this, consider joining The .NET Weekly - my newsletter with 35,000+ engineers that teaches you how to improve at .NET and software architecture. Subscribe here โ†’ milanjovanovic.tech/?utm_source=Twโ€ฆ What's your best advice for managing exceptions?
Milan Jovanoviฤ‡ tweet mediaMilan Jovanoviฤ‡ tweet mediaMilan Jovanoviฤ‡ tweet mediaMilan Jovanoviฤ‡ tweet media
English
7
37
229
18.8K
Cleomar Pestilli nag-retweet
Rishabh
Rishabh@Rixhabh__ยท
Free Certificaton courses form Standford University: 1. Career Success coursya.com/product/careerโ€ฆ 2. Project Management Principles and Practices coursya.com/product/projecโ€ฆ 3. Project Management & Other Tools for Career Development coursya.com/product/projecโ€ฆ 4. Business Value and Project Management coursya.com/product/busineโ€ฆ 5. Engineering Project Management coursya.com/product/engineโ€ฆ 6. Software Product Management coursya.com/product/softwaโ€ฆ 7. Agile Development coursya.com/product/agile-โ€ฆ 8. Scrum Master Certification coursya.com/product/scrum-โ€ฆ 9. Six Sigma Yellow Belt coursya.com/product/six-siโ€ฆ 10. Machine Learning coursya.com/product/machinโ€ฆ 11. Algorithms coursya.com/product/algoriโ€ฆ 12. AI in Healthcare coursya.com/product/ai-in-โ€ฆ 13. Deep Learning coursya.com/product/deep-lโ€ฆ 14. Natural Language Processing coursya.com/product/naturaโ€ฆ 15. Software Design and Architecture coursya.com/product/softwaโ€ฆ Follow @ai_insights3 for more free resources.
Rishabh tweet media
English
5
127
257
24.8K
Cleomar Pestilli nag-retweet
javinpaul
javinpaul@javinpaulยท
10 System Design Topics Developers Should Learn in 2023 1. Caching 2. Sharding 3. load-balancing 4. replication 5. fault-tolerance 6. high-availability 7. Concurrency 8. scalability 9. Performance 10. Indexing learn more on DesignGuru - bit.ly/3pMiO8g
javinpaul tweet media
English
3
168
606
41.9K
Cleomar Pestilli nag-retweet
Milan Jovanoviฤ‡
Milan Jovanoviฤ‡@mjovanovictechยท
Dependency Inversion + DDD = Domain-centric architecture A few famous examples are: - Hexagonal (ports and adapters) - Onion architecture - Clean architecture Clean architecture places the business logic and domain model at the application center. Use cases are also part of the core of the application. They orchestrate the domain model and tell it what to do. It's interesting how the dependencies between layers work. The inner layers define abstractions (interfaces). The outer layers implement these interfaces. At run time, the concrete implementations replace the interfaces. This allows you to hide the internals of things like SMS messaging, email, caching, etc. Another benefit is improved testability. The application core doesn't depend on infrastructure. So, it's easy to write automated unit tests for this layer. However, I find myself moving towards a more feature-driven approach. Similar to what Vertical Slice Architecture proposes. I will also break the dependency rule and introduce EF/Dapper in the Application layer. But the thing is, I know how to maintain this kind of system. I know when to introduce an abstraction or refactor the use case. You can only learn this from experience and building many systems. So don't obsess over architecture too much. Having the freedom to make the right architectural choice is what matters. P.S. If you liked this, consider joining The .NET Weekly. I write about software engineering & architecture every Saturday. Join 33,000+ engineers: milanjovanovic.tech When would you pick the Clean Architecture?
Milan Jovanoviฤ‡ tweet media
English
8
134
620
57.9K
Cleomar Pestilli nag-retweet
Giovanni Bassi ๐Ÿ‡ง๐Ÿ‡ท๐Ÿฆ‹
Perspectiva interessante do Richard. Eu estava lรก 20 anos atrรกs e posso dizer que nรฃo mudou praticamente nada. Financeiro e comercial sempre dominaram toda empresa mais estruturada. E devs jรก reclamavam de estarem sendo comoditizados e que "bom mesmo foram os anos 90". ร‰ um fato que hรก um esforรงo intenso acontecendo pra tornar devs desnecessรกrios, mas ele simplesmente nรฃo dรก resultado. E essa percepรงรฃo de que dev รฉ sรณ mais um, que nรฃo importa, que รฉ peรฃo etc sรณ reflete a realidade. ร‰ isso mesmo: vocรช, dev, nรฃo importa, e nรฃo รฉ diferente de nenhum outro funcionรกrio. Sรณ tem uma sรฉrie de privilรฉgios porque o mercado de contrataรงรฃo estรก a seu favor, e quando/se isso mudar vai ser tratado igualzinho o resto. Mas teus privilรฉgios nรฃo te dรฃo acesso ร s conversas realmente importantes, e nem a dinheiro realmente alto. Vocรช รฉ proletรกrio. Bem pago, mas, ainda assim, proletรกrio.
Riccardo Lamberti@ricardonho

Tenho conversado muito com CEOs, CTOs e CFOs ultimamente. Nos รบltimos 20 anos, a visรฃo do que รฉ um DEV pra eles mudou bastante. Em 2004, um DEV era a peรงa chave, o talento crucial e epicentro da empresa. Hoje pra eles DEV รฉ commodity. Encontra-se em qualquer esquina+ #bolhadev

Portuguรชs
40
66
748
115K
Cleomar Pestilli nag-retweet
Carol F.
Carol F.@Caroldefgยท
Nรฃo foi Israel.
Portuguรชs
36
73
217
24.8K
Cleomar Pestilli nag-retweet
Security Trybe
Security Trybe@SecurityTrybeยท
Linux Command Line
Security Trybe tweet media
English
1
172
668
80.7K
Cleomar Pestilli nag-retweet
MIT CSAIL
MIT CSAIL@MIT_CSAILยท
All major neural networks, in one chart: bit.ly/2HB7tl9 v/The Asimov Institute
MIT CSAIL tweet media
English
16
714
3.1K
347K
Cleomar Pestilli nag-retweet
Dr Milan Milanoviฤ‡
Dr Milan Milanoviฤ‡@milan_milanovicยท
๐—ง๐—ผ๐—ฝ ๐Ÿญ๐Ÿฌ .๐—ก๐—˜๐—ง ๐—–๐—ผ๐—ฟ๐—ฒ ๐—Ÿ๐—ถ๐—ฏ๐—ฟ๐—ฎ๐—ฟ๐—ถ๐—ฒ๐˜€ ๐—ฌ๐—ผ๐˜‚ ๐—ฆ๐—ต๐—ผ๐˜‚๐—น๐—ฑ ๐—จ๐˜€๐—ฒ If you're a .NET developer, here are some important libraries I use in my projects: ๐Ÿญ. ๐—ก๐—ฒ๐˜„๐˜๐—ผ๐—ป๐˜€๐—ผ๐—ณ๐˜.๐—๐˜€๐—ผ๐—ป: ๐Ÿฎ. ๐—ฆ๐—ฒ๐—ฟ๐—ถ๐—น๐—ผ๐—ด ๐Ÿฏ. ๐—™๐—น๐˜‚๐—ฒ๐—ป๐˜๐—ฉ๐—ฎ๐—น๐—ถ๐—ฑ๐—ฎ๐˜๐—ถ๐—ผ๐—ป ๐Ÿฐ. ๐— ๐—ฒ๐—ฑ๐—ถ๐—ฎ๐˜๐—ฅ ๐Ÿฑ. ๐—ฅ๐—ฒ๐—ณ๐—ถ๐˜ ๐Ÿฒ. ๐—ค๐˜‚๐—ฎ๐—ฟ๐˜๐˜‡ ๐Ÿณ. ๐˜…๐—จ๐—ป๐—ถ๐˜ ๐Ÿด. ๐—ฃ๐—ผ๐—น๐—น๐˜† ๐Ÿต. ๐—™๐—น๐˜‚๐—ฒ๐—ป๐˜๐—”๐˜€๐˜€๐—ฒ๐—ฟ๐˜๐—ถ๐—ผ๐—ป๐˜€ ๐Ÿญ๐Ÿฌ. ๐—ฌ๐—”๐—ฅ๐—ฃ Can you suggest anything else not on the list? _______ If you like my posts, please follow me, @milan_milanovic, and hit the ๐Ÿ”” on my profile to get a notification for all my new posts. Grow with me ๐Ÿš€! #technology #softwareengineering #programming #techworldwithmilan #dotnet
English
37
80
427
96.1K
Cleomar Pestilli nag-retweet
javinpaul
javinpaul@javinpaulยท
5 Best Programming Languages for Artificial Intelligence in 2023 buff.ly/3LzIErp
English
1
2
9
5.8K