You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-[Continuous Integration - Important Questions](#continuous-integration---important-questions)
47
+
-[Continuous Integration - Important Questions](#continuous-integration--important-questions)
48
48
+[DevOps](#devops)
49
49
*[Design](#design)
50
50
+[Agile and Design](#agile-and-design)
@@ -54,7 +54,7 @@ I've been Programming, Designing and Architecting Java applications for 15 years
54
54
*[Architecture](#architecture)
55
55
+[General](#general)
56
56
-[Why is it important to use Continuous Integration from Day 0 of the project?](#why-is-it-important-to-use-continuous-integration-from-day-0-of-the-project)
57
-
-[What is a vertical slice? Why should you need it?](#what-is-a-vertical-slice--why-should-you-need-it)
57
+
-[What is a vertical slice? Why should you need it?](#what-is-a-vertical-slice-why-should-you-need-it)
58
58
-[Why should you create a reference component?](#why-should-you-create-a-reference-component)
59
59
-[Agile and Architecture. Do they go together?](#agile-and-architecture-do-they-go-together)
60
60
+[Layers](#layers)
@@ -70,20 +70,20 @@ I've been Programming, Designing and Architecting Java applications for 15 years
70
70
-[What are micro-services?](#what-are-micro-services)
71
71
-[Why is it important to have an API Standard?](#why-is-it-important-to-have-an-api-standard)
72
72
-[What is the importance of Logging and Centralized Monitoring?](#what-is-the-importance-of-logging-and-centralized-monitoring)
-[What happens behind Maven? What is a Repository?](#what-happens-behind-maven--what-is-a-repository)
81
+
-[What happens behind Maven? What is a Repository?](#what-happens-behind-maven-what-is-a-repository)
82
82
-[What is use of Maven Parent POM?](#what-is-use-of-maven-parent-pom)
83
83
-[Maven Best Practices](#maven-best-practices)
84
84
-[10 Tips For Maven](#10-tips-for-maven)
85
-
+[Why should you have api & impl in each layer maven projects?](#why-should-you-have-api---impl-in-each-layer-maven-projects)
86
-
+[IDE - Eclipse](#ide---eclipse)
85
+
+[Why should you have api & impl in each layer maven projects?](#why-should-you-have-api--impl-in-each-layer-maven-projects)
86
+
+[IDE - Eclipse](#ide--eclipse)
87
87
-[10 Tips For Eclipse](#10-tips-for-eclipse)
88
88
+[Version Control](#version-control)
89
89
-[Why should you migrate to GIT?](#why-should-you-migrate-to-git)
@@ -238,7 +238,7 @@ I've been Programming, Designing and Architecting Java applications for 15 years
238
238
#### Continuous Integration - Important Questions
239
239
- How often is code commited?
240
240
- How early are problems/defects found/fixed?
241
-
-- Code Quality, Code Review, ST Defects
241
+
- Code Quality, Code Review, ST Defects
242
242
- Broken Builds?
243
243
- How often is code deployed to production?
244
244
- How often is code deployed to test environment?
@@ -253,6 +253,12 @@ I've been Programming, Designing and Architecting Java applications for 15 years
253
253
- How long does a Continuous Integration build run for? Is there a need for multiple builds?
254
254
255
255
### DevOps
256
+
- Typically Enterprise Teams are made up of number of teams - Dev, QA, DBA,Administrators, Operations, Project and Release Management.
257
+
- Each team works in silos. Some teams have contradicting goals. Dev team wants to push their features live as soon as possible where as Operations want stability. Operations are measured on availability.
258
+
- Reliance on documentation and hand-offs.
259
+
- Devops aims at making these teams work together focused on single goal - Delivering value to end customers safely.
260
+
- Single Leadership.
261
+
- Continuous Delivery.
256
262
257
263
## Design
258
264
@@ -270,10 +276,10 @@ I've been Programming, Designing and Architecting Java applications for 15 years
270
276
- Minimize Duplication
271
277
- Maximize Clarity
272
278
- Keep it Small
273
-
-- Code - Method, Class, jar etc
274
-
-- Component
275
-
-- Cycle Time (Short cycles)
276
-
-- Team Size
279
+
- Code - Method, Class, jar etc
280
+
- Component
281
+
- Cycle Time (Short cycles)
282
+
- Team Size
277
283
278
284
- Object Oriented Programming. Have good object, which have well-defined responsibilities. Following are the important concepts you need to have a good overview of. These are covered in various parts in the video https://www.youtube.com/watch?v=0xcgzUdTO5M. Also, look up the specific videos for each topic.
Details about the important parts of the systems and the constraints (boundaries, communication, standards, guidelines)
304
+
## How to be a good architect?
305
+
- PDF - How to be a good architect : https://github.com/in28minutes/java-best-practices/blob/master/pdf/How%20to%20be%20a%20good%20Software%20Architect.pdf
306
+
307
+
### Architect Responsibilities
308
+
- Having good governance in place. Good review processes in place for Architecture, Design and Code.
309
+
- Creating a clean architecture based on sound principles. Architecture covering all Non Functional Requirements.
310
+
- Ensuring teams are as productive as they can be. Right tools.
311
+
- Ensuring teams are following the best engineering practices.
312
+
- Ensuring clear communication about architecture with business and technical teams.
Most important qualities I look for in an Architect are
317
+
- Impeccable Credibility : Somebody the team looks up to and aspires to be.
318
+
- Super diagnostic skills : The ability to do a deep dive on a technology issue. When developers are struggling with a problem (having tried different things), Can he/she provide a fresh pair of eyes to look at the same problem?
319
+
- Forward Thinker and Proactive : Never satisfied with where we are. Identifies opportunities to add value fast.
320
+
- Great Communication : Communication in the widest sense. Communicating the technical aspects to the stakeholders, project management, software developers, testers, etc.
#### Why is it important to use Continuous Integration from Day 0 of the project?
301
329
@@ -404,10 +432,10 @@ Richardson Maturity Model defines the maturity level of a Restful Web Service. F
404
432
- While designing any API, the most important thing is to think about the api consumer i.e. the client who is going to use the service. What are his needs? Does the service uri make sense to him? Does the request, response format make sense to him?
405
433
- URI’s should be hierarchical and as self descriptive as possible. Prefer plurals.
406
434
- Always use HTTP Methods. Best practices with respect to each HTTP method is described below:
407
-
-- GET : Should not update anything. Should be idempotent (same result in multiple calls). Possible Return Codes 200 (OK) + 404 (NOT FOUND) +400 (BAD REQUEST)
408
-
-- POST : Should create new resource. Ideally return JSON with link to newly created resource. Same return codes as get possible. In addition : Return code 201 (CREATED) is possible.
409
-
-- PUT : Update a known resource. ex: update client details. Possible Return Codes : 200(OK)
410
-
-- DELETE : Used to delete a resource.
435
+
- GET : Should not update anything. Should be idempotent (same result in multiple calls). Possible Return Codes 200 (OK) + 404 (NOT FOUND) +400 (BAD REQUEST)
436
+
- POST : Should create new resource. Ideally return JSON with link to newly created resource. Same return codes as get possible. In addition : Return code 201 (CREATED) is possible.
437
+
- PUT : Update a known resource. ex: update client details. Possible Return Codes : 200(OK)
438
+
- DELETE : Used to delete a resource.
411
439
412
440
##### JAX-RS
413
441
JAX-RS is the JEE Specification for Restful web services implemented by all JEE compliant web servers (and application servers).
- Challenges with Monolith Applications - Longer Release Cycles because of Large Size, Large Teams and difficulty in adopting Automation testing and modern development practices
432
460
- “Keep it Small”. Small deployable components.
433
461
- Flights
434
-
-- Points
435
-
-- Offers
436
-
-- Trips
462
+
- Points
463
+
- Offers
464
+
- Trips
437
465
- Customer
438
-
-- Product
439
-
-- Order
440
-
-- Recommendations
466
+
- Product
467
+
- Order
468
+
- Recommendations
441
469
- Key question to ask : Can we make a change to a service and deploy it by itself without changing anything else?
#### What is the difference between Microservices and SOA?
470
497
Microservices have similar goals from SOA : Create services around your business logic.
471
498
@@ -511,28 +538,6 @@ Saving Account and Debit Card are different products managed by different produc
511
538
512
539
#### Why should you create small components?
513
540
514
-
## How to be a good architect?
515
-
- PDF - How to be a good architect : https://github.com/in28minutes/java-best-practices/blob/master/pdf/How%20to%20be%20a%20good%20Software%20Architect.pdf
516
-
517
-
### Architect Responsibilities
518
-
- Having good governance in place. Good review processes in place for Architecture, Design and Code.
519
-
- Creating a clean architecture based on sound principles. Architecture covering all Non Functional Requirements.
520
-
- Ensuring teams are as productive as they can be. Right tools.
521
-
- Ensuring teams are following the best engineering practices.
522
-
- Ensuring clear communication about architecture with business and technical teams.
Most important qualities I look for in an Architect are
527
-
- Impeccable Credibility : Somebody the team looks up to and aspires to be.
528
-
- Super diagnostic skills : The ability to do a deep dive on a technology issue. When developers are struggling with a problem (having tried different things), Can he/she provide a fresh pair of eyes to look at the same problem?
529
-
- Forward Thinker and Proactive : Never satisfied with where we are. Identifies opportunities to add value fast.
530
-
- Great Communication : Communication in the widest sense. Communicating the technical aspects to the stakeholders, project management, software developers, testers, etc.
0 commit comments