Category Archives: Architecture

Security best practice, patterns & architecture links from AWS, GCP & Azure – Part 1

Herewith I am providing a curated list of links for security best practices, patterns & architecture for AWS, GCP & Azure – Part 1.

AWS:

GCP:

AZURE:

Also, check out security as code products like oak9:

Email me: Neil@HarwaniSystems.in

Key concepts, documentation & keywords in Kafka – Part 1

Here are some important concepts, documentation and keywords of Kafka that you can refer and learn. There are two major flavors of Kafka – Apache Kafka & Confluent Kafka, I have listed major keywords, documentation and concepts from both here:

  • Broker
  • Zookeeper
  • kSQL
  • REST-Proxy
  • Schema-Registry
  • Connectors
  • Operator
  • Control Center
  • Streams
  • Topics
  • Consumers
  • Producers
  • Partitions
  • Offset
  • Log
  • Node
  • Replica
  • Message
  • Leader
  • Follower
  • Replicator
  • Schema management
  • Confluent Hub
  • Events
  • Associated keywords in today’s cloud deployments: Docker containers, Kubernetes, Ansible, Security

Associated documentation:

Productivity hacks for Architects / Designers / Tech Leads

As per my experience, the biggest productivity hacks for Architects / Designers / Tech Leads are not to decide the variables / class names / loops / scope / data types / exception handling / object relational mapping & so on – they definitely are important and should be done, but so are the below points:

1. Design patterns

2. What is the code for?

3. Functional to technical mapping

4. Solution creation

5. Pseudocode & logic steps

6. Logic of solution for design / programming problems

7. Co-ordination with stakeholders & communication

8. Code review

9. Logic review of programmed modules

10. Architecture / Design thoughts

11. Knowledge updation around tools / products / frameworks usage

12. Time management of developers

13. Task management of developers

14. Solving problems in design

15. Programming standards management

16. Technical best practices management

17. New technology exploration

18. Helping sales, presales & practice

19. Working on POCs, solutions, products and accelerators

20. Updating oneself with the current happening in industry and domain

21. Automation, Security, Testing, Deployment, Continuous integration / deployment, Integrations, Logging, User Interface / User Experience, Application monitoring, Support structure, Clustering / Auto-scaling, Non functional requirements and other such important areas

22. Establish collaboration / teamwork among technical staff working with them

23. Right documentation and knowledge sharing practices

Many get stuck in only programming, that is definitely something we all love and do, but you should be dividing your time as an Architect / Tech Lead / Designer between programming and above tasks equally. Current enterprise softwares are complex and you can’t achieve much without collaboration and above form an important link for productivity in complex, large team projects.

#architecture #design #technicallead #solutionsarchitect

Email me: Neil@TechAndTrain.com

Visit my creations:

  • www.TechAndTrain.com
  • www.QandA.in
  • www.TechTower.in

Skills required for working as a Solution Architect

  • High level Architecture understanding about Clustering of Databases / Applications Servers / Operating Systems, Enterprise Architecture, Non Functional Requirements, Integrations, Various Enterprise Software Products & Frameworks
  • Concepts of Virtualization and Cloud platforms like AWS, Azure & Google Cloud
  • Integration – Tools, Frameworks & Products that can be used like ESB, Web-Services, etc.
  • Latest trends around Big Data, NoSQL, React, Mobility, Portals, ERP, Cloud, Search, Scanning, Analytics, Networking, etc.
  • Reading list of websites for updating oneself on various domains, trends & technologies
  • Documents, spreadsheets & presentations – Skills with MS-Word, MS-Excel, MS-PPT, Google Docs, HTML, Visio, Free / Open Source / Cloud based Enterprise Architecture & Digital Marketing Tools & MS Paint, etc.
  • Programming skills in at-least one front line full application programming language like Java, VB.Net, C#, etc. as a minimum & concepts of digital electronics & microprocessors
  • Database, Encryption & Computer Networking skills including SQL, PL/SQL, Indexing, Triggers, Procedures, TCP/IP, UDP, IPv6/4, SSL/HTTPS, Types of encryption, etc.
  • Basics of how to create requirement documents, proposals, estimations & statement of works
  • Soft skills for working & collaborating with various stakeholders from Top Management, HR, Finance, Legal, Operations to developer level and customers
  • Reporting skills around creation of document, status updates, etc.
  • Project Management & Testing overview, Tools, Processes & Products used for the same
  • Overview of Quality Frameworks like CMMi, ISO, etc.
  • Ability to learn things quickly, present them in concise, customer friendly ways & networking skills to support Sales & Project Managers
  • Basic understanding of RFP / RFI / RFQ & Consulting process

Part 1 for this here: What do Presales Consultants / Solution Architects do ?

What do Presales Consultants / Solution Architects do ? – Part 1

All software projects and software product development goes through a cycle whether in AGILE / WATERFALL / ITERATIVE / HYBRID AGILE / DEVOPS / etc. where requirements are discussed, finalized or atleast finalized at a high level with prospects / customers – internal or external, post which project Statement of Work is created / signed or product backlog is created, agreed and work on software / product development starts.

Presales Consultants OR Solution Architects typically work on below items:

  • Responding to Request for Proposals / Request for Information / Request for Quote by building proposals which cater to various sections like compliance, terms and conditions, pricing, milestones, requirements, architecture, etc.
  • Finding the fitment of the prospect’s work in terms of organizational / technology / domain / process / quality / etc. with company and providing input for continuing the work of the prospect or not
  • Finalize or participate in high level solution and architecture design
  • Take decisions or participate in the same for areas like open source vs. proprietary or mixed
  • Conduct demos of earlier projects done / products built / solutions
  • Build pricing models for the project and milestones
  • Estimate or participate in estimation discussions
  • Conduct user / customer interviews as a business analyst or tester
  • Build proof of concepts / technology or functional demostrators
  • Participate in consulting assignments as a facilitator for architects and / or build the high level direction of the assignment or solution
  • Participate in or present the solutions / products to clients
  • Stay updated with trends in technology / domain, news, happenings in IT industry and overall in the organization which they represent so as to right fit the solution to the customer’s needs based on what’s available and possible
  • Build case studies, proposal and estimation repository, create white papers / presentations, processes for responding to client requests, list of standard questionnaires and their answers, etc.
  • Understand and study competitors, document the same
  • Build or participate in building best practices across technology, domain, process and quality
  • Create statement of work, proposals, quotes, approach documents, presentations, minutes of meetings and other artifacts that act as base documents for a sales discussion from back-end sales support side
  • Provide inputs to sales, marketing, delivery, testing, finance, HR, etc. and others as required based on the trends and customer knowledge that they acquire from industry / customer interactions
  • Hand over signed contracts and statement of works to the software delivery team via a hand over to start development or activities required before that and transfer understanding of customer expectations
  • Monitor the project along with project manager at high level for cost, architecture, technology, domain and duration, then participate in testing to ensure that product or project is on right track

Above was Part – 1 on details of what a Presales Consultant or a Solution Architect does. Moving forward I will post more details on the whole Presales and Solutioning life cycle

Blockchain for ECM and Digital Assets

What is ECM ?

Enterprise Content Management is a repository of documents with workflow, scanning, digital rights management, integrations, metadata, web content management and portals weaved around it

What is BlockChain ?

Database mainly used as distributed ledger which does not allow modifications of earlier stored ‘Blocks’ in it and secured by cryptography in a way where earlier blocks’ signature is stored on the next instance resulting in immutability. If any of the earlier blocks are modified it results in a corruption of network majority

What can we do when we merge BlockChain with ECM ?

We have immutable strings in Java, we have immutable objects in programming. But to maintain immutability in Enterprise Content Management, Document Management and Digital Assets we go upto great lengths to have hashing, signatures, complex repository engines, MD5s and so on.

One thing that could help us is BlockChain. People have already started speaking of building custom ECM engines using open source products from NoSQL and Portal domain. If we add a BlockChain database to this mix, we get a serious contender for a new type of ECM repository – one that does not need complex repository logic or probably simplifies it.

Use cases:

  1. ECM – We can take a NoSQL database, Blockchain and a horizontal portal. Portal works for the workflow, presentation, rules, etc. NoSQL for the metadata and BlockChain for integrity of the repository assets like documents.
  2. Digital assets repository – All the signatures of the various repository assets in an enterprise could be stored in the BlockChain which can verify assets’ integrity just like what MD5 does

Its worth exploring. BlockChain can be so much more than just transactions’ integrity management.

Architecture design

One mistake many make while building architecture for any application / system is to build the architecture using best/latest technology in isolation.

Architecture design has to be mapped to the use case and requirements.

Areas listed below and more should be considered while making design for the architecture:
1. NFR (Non functional requirements)
2. Security
3. Groups/roles/etc.
4. Integration
5. Use case
6. Information processing, etc.

All of the above and more should be considered upfront and consideration should not just be given for the best/latest technologies. Unless for example we consider how many users will use the system, which type of information exists, what are it’s updation rates, etc. who will access the system with what rights, what scalability is needed, how fast will the system change, what are the uptime requirements, etc. we can’t build the right system.

All of the above should be covered right from design and appropriately data should be partitioned, security design should be built, scalability should be thought of and issues like groups/roles/users, identity and access management should be mapped to the use case or the requirement.