Canonizer Proposal By Talentelgia Technologies Pvt. Limited
We at Talentelgia Technologies emphasize on offering a high degree of product-user friendliness through an optimistic approach towards our work and our clients. Empowering customers since 2012, Talentelgia is one of the leading offshore IT development company that executes web development, CMS customization, ERPs, mobile applications, e-commerce and digital marketing services.
Our company endeavors to promote a business philosophy which deals with assuring the highest quality products, client satisfaction, timely delivery of solutions and the best quality/price ratio found in the industry.
United by our commitment to innovation and excellence, Talentelgia Technologies has expanded its services in AI/ML, data modelling, business and data intelligence, market analysis, Fin-tech, AR/VR, IoT etc and have developed and delivered turn key business solutions to its overseas customers.
Talentelgia Technologies is a group of IT enthusiasts addressing the critical needs of its global customers in every phase of software development lifecycle. Our custom automated business software solutions help the clients to easily manage their business processes. The business analyst team conducts a thorough research/analysis on customers business, existing marketing competition, target audience behaviour etc and then move towards the next step.
Once the business analysis is done, we act as business and IT consultants for our customers by preparing detailed CSD (client specification document) and SRS (software requirement specification) documents detailing all their business requirements and technology recommendations to develop their business software.
We have unique expertise in developing customized business automation software in different business domains such as healthcare, e-commerce, CRM, SAAS, e-learning, fin-tech, business directories, eBanking, events marketing & management etc. We gain competitive advantage from these distinctive capabilities by delivering custom ERP software solutions.
Talentelgia Technologies is a company which intends to be in front of the clients’ needs as their technical business partner and consultants. We always look up at the things from customers perspective and offer them full stack software development services by assisting them in every aspect of software development life cycle.
We have reviewed your current platform and it is type of content generation tool, where user can create any topic/camp. Other user can be a part of that camp and create sub camps with their views on same. So under same camp, we can have multiple sub camps and other user can vote to the sub camps that they feels the content is more legitimate or meaningful. Based on the submit the vote, camps get prioritize in the list with the score. So user can understand easily what is user prospect on added content and understand the legitimacy of content.
Application is developed in Laravel and now you are looking for team, who can take over the project and contribute to make it highly scalable, user friendly, and implement proper coding and architecture to support large user base. Our process will start based on reverse engineering concept where we will first understand your business needs and accordingly evaluate your application architecture and will suggest you the points on how to improve, scale it or rebuild it. Our proposition will include to fix the current architecture, rebuild certain portions of it for better performance OR rebuilding of the overall architecture from scratch (if you are open for it) and implementation of additional features to help you meet your future business requirement.
Overview of key features included in current application-
- User registration and login
- Social Logins (Google/Fb/LinkedIn/Twitter/GitHub)
- Social login and authentication
- Manage and Add news feeds
participate in camp forum
How would you architect a canonizer to be massively scalable?
It needs to be able to automatically grow, when needed, to handle millions of simultaneous users, then scale back to save costs when load is absent.
As your application is already is using AWS EC2 for hosting, we can use the same with better ram/processor along with EC2 container service and Lambda functions for load distribution and management, so increase in traffic can be redirected in case if high usage or, if any one of system fails
· AWS Lambda function auto scales the RAM as per the requirement of the particular function.
· Storage-As application will have requirement for media storage. We can use S3 for storage where all static media content can be served directly from S3 buckets for fast processing.
· We can also use SNS and SQS service to manage the notification for running Lambda functions. So, whenever any function request is received, it is stored in SQS and next SNS service is used to send notification at backend to run the Lambda functions for the same.
· Implement the realistic load testing to understand the system response on high traffic and load
· Implementing auto-scaling so that application can respond to dynamic traffic usage
· Set up monitoring and alerts to identify and track the issue as they occur. So, fixes can be applied in quick manner
· Back up or replicate data across regions or providers and automate backups to have latest data for any data recovery
· Securing and authenticating the communications across these regions as the traffic will traverse the open Internet.
· Set up database mirroring, master/slave configurations, and/or priming to ensure data integrity and minimum downtime.
· Using the dynamic DNS and static IPs so that components of your application’s infrastructure always have the right context.
I have also drafted suggested tech architecture using Laravel as backend technology framework -
What type of team management or prioritization tools are normally used, if any?
We use agile approach to execute the large-scale project and follow below listed tools for easy project management and collaboration.
· Communication Management - Slack for communication between distributed team network, that can easily integrate with 3rd party tools such as dropbox and Google drive for document sharing.
· Task Management tools - Jira/Asana/Slack - Daily tasks of each sprint are defined on these platforms to collaborate, where you can also follow the daily development and make your comments and notes
· Code Management - So all developer can collaborate for code management, see all their comments, create all the code branches, and then merge them together into sprint releases.
· Application performance monitoring tools - Amazon CloudWatch for Application Monitoring and AppDynamics Application Performance Management
· Project Wikis - Atlassian’s Confluence to keep/manage all the use cases and test cases in same place
· API Documentation - Swagger for API documentation and automating the API related processes
What experience do you have setting up and maintaining systems that are 100% continuous delivery enabled, including automated tests that prove 100% of functionality still works with each modification made to the code, along with automatic deployment of such fully tested changes
We follow DevOps approach for software development cycle for successful execution which consists of below mentioned 5 steps:
1. Continuous Development - This phase involves planning and coding application and when we start writing the code, it referred to as coding phase. To commit the code, I have used various version control tools such as GIT/SVN and JIRA
2. Continuous Testing - In-order to release the code I usually perform unit/functional testing to ensure everything is working fine. Tool - Selenium/Junit
3. Continuous Integration – This phase helps to integrate tools with configuration management for deployment. Tools – Jenkins/GitlabCI
4. Continuous Deployment – this phase helps in establishing and maintaining consistency in an application be it functional requirements and performance. Tools – Jenkins/Gitlab
5. Continuous Monitoring - Monitoring is as important of DevOps life cycle as while developing the application there will always be a possibility of bugs which could remain undetected during the testing phase. Tools - AWS CloudWatch and Stack Driver
Provide any other ideas of how you could contribute or help improve Canonizer and it’s goals.
Here are some optimizations we can look into to improve the overall performance of apps-
1.We can check overall application performance of Web application from browsers by checking page load time and requests response time.
2.We can monitor the requests taking response time longer than expected.
3.We can check for the exceptions and fix them.
4.Tracking the database queries and stored procedures and optimize them.
5.Logs monitoring for requests and responses however keeping the logs minimum
6.we can check where request data can be cache and where cache is maintained
7.Applications 3rd party dependencies and their performances.
8.Check for memory leaks.
9.Checking for long running loops or threads.
10.Checking for coding practices followed i.e., null values and use of try Parse.
11.Check for the infrastructure provide to run the application.
12. Check for minified version of CSS and jQuery libraries.
13 use of CDN for images, fonts or other scripting and styling files.
14. Making UI more user friendly and responsive for multiple browsers and devices
What is your philosophy on code reviews by team members, or strategies such as team or pair coding?
Yes, we follow best practices for code review to achieve the same we follow defined procedure. We don’t exactly follow the pair code, but we have specific team member we handle the code review. So before the code is ready for review, developer make sure to clear the below check list –
- No code compilation warning and it passes static analysis
- Perform all unit test, integration test and system test
- Perform the code cleanup and remove any unwanted code
- Code is properly commented and include the notes for new implementation
- If some changes are made, it should outline the change and reason for change
Once the code is ready for review and code reviewer perform his analysis on following parameters -
- Error handling and logics
- APIs are well documented
- Proper and consistent indentation
- Structured (or modular) programming techniques is followed
- Variable have mnemonic or meaningful names that convey to a casual observer
- Program statements Are limited to one per line
- Meaningful error Messages
- Reasonably Sized Functions and Methods are used
- Authorization and authentication handled properly
- Cross-site scripting, SQL injection,
- input sanitization and validation
Do you have any examples of times when you went beyond what was being asked of you by your immediate supervisor to further the goals of the company or humanity as a whole?
As an individual contributor, I have always believed in creating second line leaders, motivating people to deliver better quality and acquire a better skill set with the passage of time.
To me, it is more important to regularly raise the standard and the quality level of mine as well my team's services.
I never restrict myself to follow the bookish examples or predefined approaches. I am a people-oriented person and always strive to make them do better by leading them with examples.
Please see "I" denotes "Talentelgia Technologies" here.
Talentelgia has always given a platform to its people to learn and earn and build a multi fold skill set to play challenging roles in various capacities as required on-site or within the organisation.
We have put an immense focus on regular learning, skills improvement and adopting an overall improved quality process.
Our uniqueness is that we have unconditionally invested in the skills enhancement of our team members and have inspired them to take on better and challenging roles in the company for our overseas clients.
1. Minish Chopra – Project Manager
Key Roles -
Perform all project management processes i.e., initiate, plan, execute, monitor, control and support complete processes e.g., scope, cost, time, issue, risk, resource, communication, quality and stakeholder management
2. Reena Nalwa - Sr. Software Engineer / Team Leader
Key Roles –
Implementing GIT flow process, including branch merges and deployment.
Implement CI/CD work-flow using Jenkins
Writing code, peer code review, documenting system environments and takes necessaries action as per tech changes.
3. Pranav Kumar – UI/UX designer (On Need Basis)
Key Roles -
Communicate with both technical and non-technical individuals to produce site map, user flows, wireframes, page layouts and UI specification deliverables for hand-off to technology and QA.
4 . Two Full stack Laravel developer
Key Roles –
Writing code, peer code review, documenting system environments,
Installing debugging tools, use of MVVC framework, creating document, supporting the testers with deployment to testing/UAT/Demo environments,
5. Sr. Frontend Developer (React/Vue/Angular)
Key Role –
6. Raman Singh - Sr. Server Administrator
Key Role –
Handle complete servers and configuration. Having complete AWS scaling and process integration. Security checks and various layer integration for any security breaches.
7. Quality Analyst
Key Roles -
Reviewing business requirement documents and software requirement documents. Write test plans, defining test scenarios, developing and maintaining test scripts, analysing bugs, and tracking bugs till closure
8. Amaltas Singh – Business Analyst
Key Roles -
Acted as a liaison between the Stakeholders and Developers, Understanding the scope and creating initial requirement document/proposals.
Quality assurance process
Being a development house, it is our responsibility to handover properly tested software applications passed through various testing parameters.
Usually, we perform the below mentioned testing while developing and before delivering the applications to the clients –
1. Unit testing by programmers
2. Responsiveness testing by designers and QA
3. Regression testing by QA
4. Security testing by QA
5. Load testing by QA
6. User acceptance testing by QA
Application deployed to your live hosting server would be passed through all the above-mentioned testing parameters.
Planned System Design Changes After Review
Our team have reviewed complete system and we found that we must have to design front end in React JS or Angular to have more light front end and more user friendly. And we have some user friendly design suggestions too which will make it more user friendly and social too.