Last updated on Aug 1 2019. Here are the best websites we found: edx.org • egrabber.com • pokedextracker.com • asite.com • certificateof.com • pcpartpicker.com • jngi.org • tiffin.edu • collegescheduler.com
Press CTRL-D to bookmark this list - BigListofWebsites.com
eGrabber - Automated List Building, Business Lead Generation, Email List Completion, Data Capture software for B2B Sales & Recruiting. eGrabber - World''s Best B2B Prospect List Building Tools - Generate 10x More Appointments. Purchased by 100K+ Companies. Call (866) 299-7314 to schedule a Demo.
Pokédex Tracker | Track the Progress of Your Living Dex Completion. A tool for tracking your Living Dex progress. Easily toggle between and track your captured Pokémon, find the locations of those left to be captured, and share a public link with others to see how you can help each other out.
Asite, the cloud platform for seamless collaboration across disciplines, from concept to completion and beyond.. The cloud platform for seamless collaboration across disciplines. Meet Adoddle. Cloud collaboration software and architecture, engineering and construction document management software.
Certificate Of | This Site Provide the Information about Certificate of Deposit/ Completion/ Occupancy/ Appreciation/ Origin/ Insurance/ Authenticity/ Citizenship/ Birth/ Death/ Authority/ Good Conduct/ Ordination/ Liability/ Correction/Adoption/ Residence Etc
Gardner Institute. The Gardner Institute is a non-profit leader in advancing, teaching, student learning, success, retention, and completion. We achieve this by working with community colleges, 4-year colleges, and universities, on analytics, academic advising, first-year and transfer experience, course redesign, retention, teaching, and learning, to ensure student success.
Tiffin University | Tiffin University. Tiffin University offers accredited, professional undergraduate, graduate and degree completion programs on campus and online through its schools of arts and sciences, business and criminal justice and social sciences.
College Scheduler by Civitas Learning | College Scheduling. Simplified.. Revolutionize student registration, one of the most critical points on the journey towards degree completion. Students can easily create optimal schedules.
Jumpcut - Captivating Online Courses. Jumpcut creates captivating online courses. Online education today is fundamentally broken. Less than 10% of people who start an online course today finish it -- a completion rate that is unacceptable to us.
Oilfield Services - Halliburton. Halliburton is one of the world's largest providers of products and services to the energy industry. Halliburton helps its customers maximize value throughout the lifecycle of the reservoir from locating hydrocarbons and managing geological data, to drilling and formation evaluation, well construction and completion, and optimizing production throughout the life of the asset.
HCL TSS | Training and Hiring Program for Fresher’s | Building IT Career | Assured IT Jobs | Software Training. HCL TSS provides the best ’Training & Hiring program’ for Fresher Engineers & Graduates. In this 6-month comprehensive software training program, that includes several job oriented computer courses, graduates are transformed to be become job ready. Upon successful completion candidates get an assured job with HCL. Build your IT career with HCL Advantage in Chennai, Lucknow, Madurai, Delhi & Nagpur.
Home: Los Angeles Valley College. Los Angeles Valley College, home of the LAVC Monarchs, offers Associates of Art (AA) and Associates of Science (AS) degrees, certificates of completion, and skill certificates.
Form I-9 Compliance | Electronic Form I-9 & E-Verify Solutions. Electronic Form I-9 & E-Verify Solutions for your business. A solution for automating the completion, signature, storage & tracking of I-9 Forms & E-Verify
ACLS Certification Institute: ACLS, BLS, PALS, NRP Certifications | ACLS.com. Need ACLS, BLS, PALS or NRP certification or recertification? Instantly get your digital provider card upon completion of training. Visit ACLS Certification Institute today!
myTEFL – Online TEFL certification, TEFL jobs & internships. Accredited online TEFL courses with a job placement upon completion. Start now and you could be teaching English abroad within three months. Prices start at $139. For each course enrollment, we make a donation to one of our inspiring partner charities.
World Oil - Upstream News | Technology | Exploration | Drilling | Production | Statistics | Big Data | Oil Prices | Events. World Oil provides news, oil prices, data, statistics, shale reports and upstream industry trends relating to the exploration, drilling, completion and production of oil and gas, both onshore and offshore.
AARP Driver Safety | Online Defensive Driving Course | AARP. AARP''s online Smart Driver course is the nation''s leading driver safety course. Upon completion, you may also qualify for a discount on your insurance.
Digital Storage Oscilloscopes | Virtual Instruments | Critical test & measurement tools | RIGOL - Innovation or nothing. RIGOL Technologies is transforming the Test and Measurement Industry. Our premium line of products includes Digital and Mixed Signal Oscilloscopes, Spectrum Analyzers, Function/Arbitrary Waveform Generators, Programmable Power Supplies, Digital Multimeters, and Data Acquisition Systems. Our test solutions combine uncompromised product performance, quality, and advanced product features; all delivered at extremely attractive price points. This combination provides our customers with unprecedented value for their investment, reduces their overall cost of test, and helps speed time to completion of their designs or projects.
Welcome to Vivekananda College, Madhyamgram. Vivekananda College, Madhyamgram was established in 1986. It is named Vivekananda College to pay our homage to Swami Vivekananda, the great patriot and social reformer, and eternal embodiment of the soul of India and a great inspiring force behind the making of modern India. Our College is a co-educational general degree college affiliated to the West Bengal State University. It is situated in a calm and quiet atmosphere and is far from markets, stations, cinema halls and other disturbing factors. At the same time it is within the locality where all modern amenities are available. It stands on the eastern side of the Jessore Road, National High Way No-34, about 1km from either Madhyamgram or Hridaypur railway station on Sealdah-Bongaon section. It is about 18 km away from Calcutta and is connected with the city, the capital Of West Bengal both by bus routes and train services. The college has now its own building (two storied) & women''s hostel, canteen for student & staff surrounded by boundary walls. General courses in Arts and Honours courses in English, Bengali, History, Geography and Education are taught here. But behind this achievement there is a history - a history of struggle a history of dedication and sacrifice of some good souls of our locality. Former Minister Sri Saral Deb became the First President of the Governing Body of the college. It was primarily due to his active participation in formulation of Government policy in matters pertaining to higher education and wholehearted support extended by ministers like Sri Sambhu Ghosh and Sri Nirmal Bose that the college was finally established in 1986. However after a period of 25 years Sri Rathin Ghosh, Chairman of the Madhyamgram Municipality was unanimously elected President of the College Governing Body in January'' 2012. It is hoped that under the able leadership of Sri Ghosh the College will achieve holistic progress by dint of his administrative acumen and erudite promptness in execution of all academic activities. Sri Ganga Sankar Chatterjee became the first Principal of the college. Dr. Chandan Kumar Chakraborty is the present principal of the college. He joined the college on 11th April 2002. Dr. Chakraborty has been taking interest for the development of the college. It is because of his Endeavour that honours courses have been opened in the college. Construction work of the 1st floor building and the construction work of the boundary walls of the college, separate students union rooms, cycle stand, women toilet, women''s hostel, water supply, canteen for student & staff, air condition library room, geography practical room, principal''s room, teachers'' room, office room, cooling water supply, smart class room, digital library system, projectors machine and so an have all been done during his period. During the tenure of service of Dr. Chakraborty, Sri Satyasadhan Chakraborty, Honourable Minister-in-Charge of Higher Education visited the college and the Honourable Minister expressed his good wishes for the college. In this connection it is to be noted that Sri Debabrata Biswas M.P. sanctioned Rs 5 lakhs for construction of the new building of the college and Rs. 8.33 lakhs for construction of the boundary walls of the college from M.P. LAD Fund. The Zilla Parishad, North 24 Paraganas has also sanctioned Rs 5 lakhs for construction of the first floor building (extension) Further Sri Debabrata Biswas has sanctioned Rs 10 lakhs for construction of new building. Again U.G.C has sanctioned Rs. 70 lakhs for construction of the women''s hostel in the college campus. The construction of the building is complete and the college authority has earned accolades for completion of the work within few months of its inception. The U.G.C team led by Prof. D.S. Rathore (Chairperson) has praised the initiative of the principal Dr. Chandan Kumar Chakroborty in this regard.
Studienkolleg-Germany. Studienkolleg-germany offers german language courses and T-courses,Mcourse, W-Course. Due to close cooperation with Otto-von-Guericke University in Magdeburg, students get pre-conditional acceptance and direct admission after successful completion of Studienkolleg.
Buy cPanel | WHM | Plesk | Litespeed | Cloudlinux - Panellicense.com - panellicense.com. Panellicense.com provides software licenses and services for web hosters for competitive prices. Buy your Litespeed, Cloudlinux, cPanel, Plesk, WHM license with instant activation after completion of your order.
Wellhead Equipment Manufacturers | Cactus Wellhead. Leading manufacturer of pressure control equipment used during drilling, completion and production operations onshore and offshore. Headquartered in Houston, Tx.
Jumpcut - Captivating Online Courses. Jumpcut creates captivating online courses. Online education today is fundamentally broken. Less than 10% of people who start an online course today finish it -- a completion rate that is unacceptable to us.
CREATE DESIGN+ARCHITECTURE. From initial concepts and planning through to detailing and completion, we work collaboratively with the whole design team, clients, consultants, contractors and Councils to produce intelligent, sustainable and beautiful solutions.
Mortgage Direct - Personalised Mortgages in Spain. Since 2006 Mortgage Direct have been liaising with banks, estate agents and international property buyers in Spain’s ever-changing mortgage market. We continue to negotiate with the banks to provide you with preferential deals both in terms of interest rates and speed of completion.
Wild Iris Medical Education | Nursing and Healthcare CEUs. Continuing education courses for nursing and other healthcare professionals since 1998. Online CEUs with instant certificate of completion. State-mandated courses and training for various health providers in NY, PA, WA and more states. Applicable for occupational and physical therapy, case management, EMS and more!
Brinkley's Estate Agents- Wimbledon Estate Agents - Putney Estate Agents Trusted Local Agency. Sell or let your property today no upfront fees only pay on completion Sales fee 0.9% INC VAT, Lettings Fee including rent collection 7% Plus VAT(8.4%) inc . Estate Agents in Wimbledon, Wimbledon Park and Putney, Visit today for Sales, Lettings and Property Management, Covering SW15, SW19 and SW18. 97% of our clients would recommend. Branches 149 Arthur Road, Wimbledon Park. 120 Wimbledon Hill Road, Wimbledon. 168 Putney High Street, Putney.
Home - NVRE University. NVREU provides the training necessary to become a licensed real estate agent or a licensed home inspector in Virginia. Upon the completion of the training courses, the student will acquire the needed skills for a career in a high-demand field!
Apex Resources | Innovative Chemical Service Provider. Apex is a leading chemical service provider delivering on innovation to the Oil and Gas Industry specializing in well stimulation, completion and erosion.
Low-Voltage Cable Management Specialists - Windy City Wire. Windy City Wire is the industry leader in cable management solutions, offering labor savings at every phase of the cable management process from concept to completion.
Upright Music. For nearly 20 years Upright Music has been providing music and music supervision for film, advertising, TV and digital. Being the leading independent music provider in Northern Europe we offer inspired and creative supervision, extensive research and efficient clearance services. Our expertise in music helps our clients with every step from concept to completion.
All-In-One Document Management Software | BuildFlow. BuildFlow is the nation''s leading all-in-one document management system, which is powerful, simple, customizable and secure. Teams are able to collaborate in real-time, and share documents easily on any device, helping them get the job done on time and on budget. BuildFlow is the right tool, from project conception to completion for any size project. Getting started is fast and easy.
How To Build a Greenhouse or Hoop House. How To Build Your Own Greenhouse or Hoophouse for less than 1/2 the cost of a greenhouse kit using The Original Greenhouse Hoop Bender. Portable, mono and compound gothic greenhouse designs. Our gothic peak bender bends perfect Gothic peaks every time. As others copy our bending tools and our greenhouse designs, we remain the leader. With our chicken tractor kits to low tunnel bending tools up to our full size greenhouse designs. All our completion can do is copy us from behind.
Nashville Production Company | United States | Coyote Kills. Coyote Kills is a Nashville TN founded production company designed to fill the needs of private and publicly owned business's commercial, feature length, music video projects to completion.
HelloWorks. The world's first workflow platform converting complex PDFs into beautiful simple workflows that reduce errors and increase completion rates. Build multi-form workflows that are mobile-first, with drag-and-drop functionality, and see document completion rates increase.
Guided Montessori Studies | Montessori Training | Montessori Online Training | Montessori Certification. The Center for Guided Montessori Studies offers comprehensive montessori online training programs for interested montessori teacher candidates. Requisite certificates distributed on course completion.
Local Authority Building Control | LABC | Building control. Ensure your building projects meet building regulation standards by working with LABC. Our national network of surveyors will give you impartial guidance from design to completion.
Vermont Construction Group | Property Development & Contracting. Vermont’s experienced team provide management of the development process from inception of the project through construction to completion and occupation, and since 2004 have delivered over 1.8m square feet of residential, student, retail and commercial accommodation with a GDV in excess of £320m. Get in touch today.
New York Heavy And Environmental Construction Experts - ECCO Enterprises. As one of New York City''s best heavy and environmental construction companies, ECCO should be your first call when you are starting a project. From the brainstorming phase through design and completion, we know what it takes to successfully complete the job.
OffCite Blog | Design. Houston. Architecture.. A shipping container packed with furniture designed by Houston-based Jamar Simien and crafted by hand in Malawi will arrive soon in Houston, after narrowly missing inundation by Cyclone Idai during transit through Mozambique. The pieces are crafted out of rare but sustainably sourced African hardwoods, while the indigenous methods reflect Malawian culture and highlight the trades of the craftsmen who practice there. Over the course of more than a few conversations with Jamar Simien, it became clear to me that his designs and his countless endeavors are all viewed through the lens of legacy. His multifaceted design studio Contour Functional Art has covered so much ground, literally, in a short period of time. Since the summer of 2018, he's started Contour, taught art to African school children, planted over 100 African Mahogany trees, began the process of building a design school in Malawi, helped a group of Malawian craftsmen start businesses of their own, and tutored countless people on how to build up their community. Jacaranda School for Orphans with Jamar Simien. An artist, landscape architect, designer, Jamar is more likely to refer to himself as an educator, perhaps in the tradition of his upbringing. His mother was an elementary school teacher. Jamar recalls her taking him to the school during the summer. From the basketball court he could see that her classroom light was the only light on in the school. "She is the most positive person I have ever met. She tried to share as much insight with me as possible. I loved playing basketball. When I was growing up in the mid nineties, we went through some rough times. And I had two ways to escape. One was art, the other was basketball. My mom encouraged me so much --- if you love art, you need to practice. If you love basketball, you need to practice. She instilled structure and positivity in me, and the importance of not only starting something, but the pertinence of completion. She invested sweat equity in me, and now I'm trying to pay it forward with my collaborators in Malawi." Originally drawn to landscape architecture at LSU for it's connections to nature, and his love of drawing, Jamar ended up in Houston when he got a job at the award-winning urban planning firm OJB. "I used to tell my kids this story when I taught art. They enjoyed hearing stories about my life and my job before teaching. At The Office of James Burnett, there was this big beautiful majestic oak tree right outside a window curtain wall. This was the fall of 2008, during the height of the recession, towards the end of my time at OJB. Every single day I'd come into the office, get my coffee, sit down at my desk, check my email and I would see this squirrel going up and down the tree. Chasing birds, chasing little animals, hiding --- all these things. I named the squirrel Charlie, and Charlie looked like he was having so much fun, and I wasn't. Despite working on huge real estate projects around the world, all I really wanted to do was draw. And you know, you don't get to do much of that anymore in architecture. You're going to be in AutoCad, you're going to be in other computer programs all day...I just wanted to pull out a pen and sketch all of the ideas that were running through my head. I felt like I had so much more to offer. That was when I decided I wanted to teach. I told myself, you know what, I'm going to be an art teacher. Sometimes you begin one journey but the path varies. I believed that teaching was going to turn into something greater, I just didn't know what that would be." African Mahogany end table. Courtesy Contour Functional Art. He left OJB to teach art for several years. Along the way, he mentored at-risk youth after school, established a long-running summer art camp and made school history by leading several art students to the state competition in consecutive years. In July of 2018, Jamar visited his godson and best friend in Malawi, a small country in East Africa. While he was there, he had the opportunity to watch some local craftsmen creating traditional wooden bowls out of African Mahogany. This experience is when the idea for Contour coalesced. "Once you start traveling you quickly realize how small the world really is, and how closely connected we actually are. How we share many of the same values and goals. How if given the opportunity, we can actually positively affect each other through brief or extensive interactions. Contour was created to not only design and build functional art, but to empower artisans globally --- and help them design and build their own future. We're all connected. In my case, I am connected to so many talented Malawian artisans because we share the same passion for art." Since that trip, along with his business partners Brandon Destouet and Ike Igbo, Jamar has turned Contour into what it is today. Brandon oversees technology and marketing for the company, while Ike oversees logistics in Africa, including shipping finished furniture to America. What is unique about the work that Contour produces is the journey it takes as it goes through production. Every piece begins with a man named Feston, who has connections with villages and individuals across Malawi. When a tree has been downed through a cataclysmic weather event, or has fallen from age, these individuals will contact him to let him know. He then will travel to the site to confirm the tree fell of natural causes, and collects the wood, milling it at his workshop by hand. Milling of African Mahogany tree in Malawi. Photo courtesy Contour Functional Art. This milled stock then travels to Carlos in Lilongwe, the capital of Malawi, for kiln drying. This is an important step of the process to ensure the natural product will retain its stability over its long life. Once the stock has been dried, it is transported to Chipa's shop. Chipa is a general contractor, and employs craftsmen of different trades in his shop. Hardwick oversees all metal fabrication, primarily out of reclaimed rebar (a popular building material in Malawi) while Mike oversees all of the wood fabrication with his team. Throughout this process, Contour works with each of these stakeholders to educate and train them on essential business skills, workflow optimization and financial best practices, teaching and training at every step of the process with the goal of creating and sustaining new businesses owned and operated locally by Malawians. One example of this is the recent expansion Feston has been able to complete at his shop. This added space allows him to rent out spaces to other aspiring entrepreneurs in the community, fostering growth and opportunity outside of the reach of even the work immediately associated with Contour. Another way to look at it is by the numbers alone - 10 employees working under Feston, 15 employees under Carlos, and another 15 employees under Chipa. Jamar says, "A good designer can see the potential in a sketch --- just like a good educator can see the potential in a person." His work with these men shows that ideological marriage of the designer and the educator, using product and production to bring out the best in the people he works with. Jamar is a man concerned with the idea of legacy. With his own, as well as yours, and mine. He wants to create legacy furniture pieces that last forever, and retain a meaningful footprint on the other side of the earth. Through their partnership with the nonprofit Root to Fruit, with every fallen tree that Contour crafts into one of a kind furniture, they plant up to 20 trees across the country of Malawi. These donated trees help sustain the life of communities by providing food, shade, medicine, firewood for cooking and heating, and so much more. Through Contour's outreach program called R.O.S.E., he wants to help craftsmen build their own legacy within their community. Reinvest, outreach, sustain and empower are all unwavering values of their vision to create positive change in East Africa. Mtangatanga dining table. Courtesy Contour Functional Art. The furniture that Contour is producing are beautiful, unique pieces --- crafted by hand out of rare materials in a far away place. But they are more than that. The best designs have meaning that goes beyond the object, and with the pieces that Contour is producing there is much more to them. They point a path forward, making a statement that good design is considerate of the people and the place it comes from. They speak to craft, and a nondestructive manufacturing process that does as much to build the product as it does to build up the people behind the product. In the post-globalization world we all currently live in, it is work like that which Jamar is doing through Contour which stands as a potent and evocative counter argument to an ever more international style, pointing a path forward for designers the world over towards products that truly have real impact across their entire lifespan. Products like the furniture Contour produces, what Jamar calls "functional art", have the power to fundamentally change what our relationships are with the objects with which we surround ourselves. That is a good legacy indeed. M. Lawrence Dillon is an industrial designer, writer, and architecture nerd living in Houston, Texas.
Welcome to Parveen Industries Pvt. Ltd.. Parveen Industries Pvt. Ltd. offers a wide range of products from GATE VALVES, CHOKE MANIFOLDS, UNIONS, WIRELINE TOOLS, COMPLETION EQUIPMENT, FLOW LINE EQUIPMENT
Buy Cheap cPanel, Plesk, WHMCS License - Instant Server Licenses. Buy your cPanel, Pesk, WHMCS license with instant activation after completion of your order. Cheap server license reseller with free software installation.
Hemfikir Ajans. We are an integrated production company: a one stop shop. We bring ideas to life, from concept to completion, across all media channels, for maximum creative and strategic impact. We started in 2015 in Istanbul. A few new people and we have grown into a team of multi-skilled, creatively agile artists– and we continue to find creative, intelligent solutions for our clients. Our creative leads consult with our clients to develop full-service production solutions. Let’s talk about what we can do for your next campaign, from start to finish.
Interior Design Singapore | Condo, Home Interior Design - 5th Avenue Interior. 5th Avenue Interior is a local-based interior design firm in Singapore that specialises in custom residential and retail & office designs. We provide comprehensive interior detailing, space planning and consultation, from concept to completion. Find out more when you visit our website!
Accessing Counseling | Leaders in Bankruptcy and Debtor Education. Access Counseling is the premier provider of consumer bankruptcy debtor education and is approved to issue certificates of completion in compliance with the Bankruptcy Code.
Axis Energy Services: A Revolution In Well Services. Axis is building a new kind of well services company for today’s shale operators. Explore our integrated, data-driven completion and workover services.
Vazoola: Premier Link Building + Influencer Marketing Platform. Powerful platform that connects brands and agencies with vetted and trustworthy influencers for the purposes of: Link Building, Content Marketing, and Social Media Campaigns.
Cascade Environmental | National Field Services Contractor. We are a full-service National Field Services Contractor, specializing in environmental, geotechnical and construction projects. Contact us today!
Eyelash Extension Training | Elite Lash Course in Los Angeles, CA. Eyelash Extension Training with Elite Lash & Brow, you are training with the best in the business. Our certified instructors have a combined 15+ years of industry experience and a loyal clientele. Through our program, you are setting yourself up for success in the world of Lash Extensions.
Construction Management | Forensic Engineering | OAC Services. From planning through closeout, our construction & project management staff will ensure successful delivery of your design or construction project.
ACI Worldwide: The Leader In Banking & Payment Solutions. ACI Worldwide delivers electronic banking and payment solutions for more than 5,000 financial institutions, merchants, billers and processors around the world.
Interite Healthcare Interiors | Healthcare Fitouts For Your Medical Practice. Interite Healthcare Interiors has over 30 years experience in the design and construction of healthcare projects across Australia.
Open School: Enterprise School Management Software. Open-School – A versatile school management software used by thousands of educational institutions worldwide for administration & management activities.
The Daily Advertiser | Lafayette, Louisiana. theadvertiser.com is the home of The Daily Advertiser in Lafayette, Louisiana. Stay up to date on all the latest news, entertainment and sports in Acadiana.
Tenant Referencing | Credit Reports | Landlord References. Tenant Referencing UK - Comprehensive Referencing including free unique Tenant History Report based on Years of data from past Landlords & Letting Agents.
School District 49 / Homepage. One of Colorado''s fastest growing school district in the Pikes Peak region, currently serving more than 19,000 students within its portfolio of schools. The district offers school of choice options.
Welcome to Valdosta State University. We are a place where all doors are open and you will never feel invisible. Consider the next four years your launching pad. Whatever your goals, Valdosta State can get you there. Your academic trajectory is shaped by innovative learning environments, hands-on research, and small class sizes.
Welcome to the HCC website. HCC has been building large and complex structures for the last 76 years. Known for taking giant strides in technology and innovation, we are now recognized as a spearheading force in engineering construction, both in India and the rest of the world.
Mount Vernon Nazarene University | Ohio, Christian, Online - Mount Vernon Nazarene University. Mount Vernon Nazarene University is a Christian liberal arts college located in Mount Vernon, Ohio, offering a variety of Bachelor's and Master's degrees.
Gökhan Gökalp | C# & Python lover. Distributed tracing, microservice architecture'ı olarak tasarladığımız sistem içerisindeki uygulamalarımızın, nerede performans problemi yaşadığını belirleyebilmemiz ve monitor edebilmemiz için harika bir method. Bir başka değişle, hangi request nereye gidiyor, uçtan uca bir request ne kadar zaman harcıyor gibi sorulara cevap alabilmemiz için implemente etmemiz gereken bir method. Bu makale kapsamında ise, OpenTracing API'ını ve Jaeger tracer'ını kullanarak .NET Core ile geliştirdiğimiz kubernetes üzerindeki microservice'lerin, distributed tracing işlemlerine değineceğiz. Senaryo Bir e-ticaret sistemi üzerinde çalıştığımızı ve uygulamalarımızı kubernetes üzerinde host ettiğimizi düşünelim. Kullanıcılar ile ilgili işlemlerden sorumlu bir User API'ımız var. Yeni bir kullanıcı sisteme kayıt olduğunda ise, "UserRegisteredEvent" adında bir event publish ediliyor. Publish edilen bu event'in subscriber'larından birisi ise, kullanıcıya hesabını aktifleştirebilmesi için e-posta göndermekle sorumlu bir service. Biz ise asenkron olarak gerçekleşen bu kullanıcı kayıt journey'inin, OpenTracing API ve Jaeger tracer'ını implemente ederek, kubernetes üzerinde uçtan uca izleme işlemini gerçekleştireceğiz. OpenTracing ve Jaeger Nedir? Kısaca sizlere OpenTracing ve Jaeger hakkında bilgi vermek istiyorum. OpenTracing, herhangi bir vendor'a bağımlı olmadan uygulamalarımıza distributed tracing için bir instrumentation ekleyebilmemizi sağlayan bir specification'dır. Tıpkı, OpenAPI gibi. Jaeger ise Uber Technologies tarafından geliştirilmiş, OpenTracing standart'larını destekleyen ve microservice mimarimiz üzerinde distributed tracing işlemlerini yapabilmemizi sağlayan harika bir tracer'dır. Jaeger hakkında daha detaylı bilgiye ise, buradan ulaşabilirsiniz. Jaeger'in kubernetes üzerine kurulumu için, şuradaki dokümanları takip edebilirsiniz. Ben bu makale için, development setup'ını uyguladım. [crayon-5cd49f3601f4f043327257/] Jaeger genel hatlarıyla, "Agent", "Collector" ve "Query" den oluşmaktadır. Agent, UDP üzerinden kendisine gelen trace verilerini dinleyip, collector'e ileten bir network daemon'ıdır. Trace verileri ise "Span" olarak adlandırılmaktadır. Collector ise kendisine iletilen trace verilerini, bir pipeline (validations, indexes, transformations) içerisinde işlemektedir. Daha sonra ise seçtiğiniz bir component (Elasticsearch, Cassandra ve Kafka) türüne göre store etmektedir. Query ise isminden de anlaşılabileceği üzere, ilgili trace sonuçlarını sorgulayabileceğimiz bir UI. Peki, Haydi Biraz Kodlayalım! Kodlamaya başlamadan önce platform için sahip olmamız gereken bazı tool'lar: Message Broker (ben RabbitMQ kullanacağım) Docker ve Kuberentes NOT: Ana konumuz platformu oluşturmak olmadığı için, ben kurulum konuları üzerinde durmayacağım. İlk olarak kullanıcıların sisteme kayıt olabilmelerini sağlayacak olan User API'ını develop edelim. Bunun için öncelikle aşağıdaki gibi bir proje oluşturalım. [crayon-5cd49f3601f67738053595/] Ardından "User.Common.Contracts" isminde bir class library oluşturalım. [crayon-5cd49f3601f70725706700/] Bu library içerisinde uygulamalarımız arasında share edeceğimiz contract'ları tanımlayacağız. Şimdi yeni bir kullanıcı sisteme kayıt olduğunda publish edeceğimiz event'i, aşağıdaki gibi oluşturalım. [crayon-5cd49f3601f75302667642/] Oluşturma işleminin ardından, "User.Common.Contracts" library'sini, az önce oluşturmuş olduğumuz "User.API" projesine referans olarak ekleyelim. [crayon-5cd49f3601f7a092216352/] Şimdi "User.API" projesi içerisinde "Models" isminde bir klasör oluşturalım ve ardından içerisine "Requests" ve "Responses" klasörlerini de oluşturalım. "Requests" klasörü içerisine kullanıcının kayıt olurken kullanacağı modeli aşağıdaki gibi tanımlayalım. [crayon-5cd49f3601f7f097304528/] "Responses" klasörü içerisine ise, internal response wrapper class'ını tanımlayalım. [crayon-5cd49f3601f83812110245/] Şimdi ise "Services" isminde bir klasör oluşturalım "User.API" projesi içerisinde. Ardından içerisine aşağıdaki gibi "IUserService" isminde bir interface tanımlayalım. [crayon-5cd49f3601f88467397128/] Kullanıcı ile ilgili business logic'leri, bu service aracılığı ile gerçekleştireceğiz. Bu noktada messaging ile ilgili işlemleri reliable bir şekilde gerçekleştirebilmemiz için projemize NuGet üzerinden bir service bus ekleyeceğiz. Ben MassTransit'in lightweight bir wrapper'ı olan MetroBus library'sini kullanacağım. [crayon-5cd49f3601f8d247751960/] Ardından distributed tracing işlemlerini gerçekleştirebilmemiz için ise OpenTracing ve Jaeger package'larını eklememiz gerekmektedir. [crayon-5cd49f3601f95994346250/] Şimdi bir klasöre daha ihtiyacımız var. Ben structured klasör yapılarını seviyorum. Her neyse, "Services" klasörü altında, "Implementations" adında bir klasör oluşturalım ve içerisinde "IUserService" interface'ini aşağıdaki gibi implemente edelim. [crayon-5cd49f3601f99836393723/] Service içerisinde kısaca neler yaptık bir bakalım. Trace context'inin diğer service'lere otomatik olarak propagate edilmesi Jaeger tarafından zaten otomatik olarak sağlanıyor. Yani api-to-api communication'ı olduğunda ve gerekli configuration'ı yaptığınızda, bir request'i uçtan uca izleyebiliyorsunuz. Biz bu noktada ise api-to-subscriber olarak event-based bir communication gerçekleştirdiğimiz için, trace context'inin propagation işlemini manuel olarak kendimiz sağladık. Trace scope'u içerisine bakarsak, "create-user-async" isminde bir span oluşturduk. Sonrasında ise client olduğuna dair bir tag ekledik. Tag'leri kullanarak span'a additional metadata'lar ekleyebilmek mümkündür. Ardından ise "TextMapInjectAdapter" aracılığı ile ilgili trace context'ini dictionary'e inject ettik. Kullanıcının sisteme kayıt olabilme işlemlerini de tamamlayarak, tracing key'leri ile birlikte "UserRegisteredEvent" ini service bus aracılığı ile queue'ya publish ettik. Bu noktadan sonra ilgili event'i her kim consume ederse, tracing key'lerini kullandığı sürece tüm akışı gözlemleyebileceğiz. Artık controller'ı oluşturabiliriz. Aşağıdaki gibi "UsersController" isminde bir controller oluşturalım. [crayon-5cd49f3601fa3390630898/] Controller içerisinde ise, oluşturduğumuz "IUserService" interface'i üzerinden kullanıcının kayıt işlemlerini gerçekleştiriyoruz. Şimdi "Startup" class'ını açalım ve ilgili service injection işlemlerini aşağıdaki gibi gerçekleştirelim. [crayon-5cd49f3601fad975534208/] Service bus'ı, RabbitMQ kullanarak initialize ettik ve ardından injection işlemini gerçekleştirdik. Daha sonra ise tracer'ı configure ederek inject ettik. Tracer'ı yapılandırırken ben sampling type'ı olarak, "const" sampler'ı kullandım. Diğer seçebileceğiniz sampling seçenekleri ise "Probabilistic", "Rate Limiting" ve "Remote" şeklinde. Daha detaylı sampling bilgilerine ise buradan erişebilirsiniz. Agent host bilgisini de kubernetes ortamınızdaki node IP'si ile değiştirebilirsiniz. Eğer agent kurulumunu sidecar olarak gerçekleştirirseniz de, herhangi bir bilgi set etmenize gerek olmayacaktır. Default bilgilerle erişim sağlayacaktır. API artık hazır durumda. Senaryomuza tekrar dönelim. Kullanıcı sisteme kayıt olduktan sonra bir event publish edecektik. Daha sonra ise kullanıcının hesabını aktifleştirebilmesi için o event'e subscribe olmuş bir aktivasyon e-posta'sı gönderen service oluşturacaktık. Şimdi event'i publish ettik ve artık kullanıcıya aktivasyon e-posta'sını gönderecek olan service'i kodlamaya başlayabiliriz. Subscriber'ın Kodlanması Bunun için yeni bir .NET Core console application'ı oluşturalım. [crayon-5cd49f3601fb6711810293/] Oluşturmanın ardından shared library olan "User.Common.Contracts" projesini referans olarak ekleyelim. Daha sonra ise NuGet üzerinden MetroBus'ı, OpenTracing'i ve Jaeger'i projeye aşağıdaki gibi dahil edelim. [crayon-5cd49f3601fbf686595388/] Console uygulaması, deamon olarak çalışacak bir background service olacak. App startup ve lifetime management'ını yapabilmemiz için ise NuGet üzerinden "Microsoft.Extensions.Hosting" ve "Microsoft.Extensions.DependencyInjection" paketlerini de projeye dahil edelim. [crayon-5cd49f3601fc4559331258/] Ayrıca configuration yönetimini gerçekleştirebilmemiz içinde "Microsoft.Extensions.Configuration" ve "Microsoft.Extensions.Configuration.Json" paketlerini de dahil edelim. [crayon-5cd49f3601fc9431166971/] İlk olarak "Common" adında bir klasör ve içerisine aşağıdaki gibi "TracingExtension" adında bir class ekleyelim. [crayon-5cd49f3601fcd853598730/] API tarafında hatırlarsak, tracing key'lerini event içerisinde publish ederek trace context'inin propagation işlemini manuel olarak gerçekleştirmiştik. Şimdi ise consumer içerisinde span oluşturmak istediğimiz bir noktada, aynı tracing key'lerini context'e extract ederek "TracingExtension" class'ı vasıtasıyla gerçekleştireceğiz. Peki, şimdi ise root dizinde "Consumers" adında yeni bir klasör daha oluşturalım ve içerisine aşağıdaki gibi "UserActivationConsumer" adında bir class ekleyelim. -> User.Activation.Consumer.Common ---> Common ---> Consumers [crayon-5cd49f3601fd4922810120/] Bu noktada, daha önce API içerisinden publish ettiğimiz "UserRegisteredEvent" model'ine subscribe işlemini gerçekleştiriyoruz. Ardından "ITracer" interface'ini inject ediyoruz. "Consume" method'u içerisinde ise, trace context'inin propagation işlemini gerçekleştirebilmemiz için oluşturmuş olduğumuz "TracingExtension" class'ını kullanarak bir scope oluşturuyoruz. Propagate edilmiş trace context'li "user-activation-link-sender-consumer" scope'u sayesinde, artık yaptığımız işlemleri api-to-subscriber olarak trace edebileceğiz. Bu service bir background service'i olarak çalışacağı için, şimdi root dizine dönelim ve "Services/Implementations" klasörlerini oluşturalım. Ardından "Implementations" klasörü altında "BusService" adında bir class oluşturalım ve aşağıdaki gibi implemente edelim. [crayon-5cd49f3601fde430065030/] Implementation sırasında yaptığımız tek şey, bus'ı start ve stop etmek. "Program" class'ını ise aşağıdaki gibi düzenleyelim. [crayon-5cd49f3601fe3048879189/] Sanırım yukarıda yaptıklarımız yeterince açık ve net. Configuration'ı ve dependency injection'ı configure ederek, service'lerimizi inject ediyoruz. Ayrıca trace'i ise, "const" type'ı ile ve "User.Activation.Consumer" adıyla initialize ediyoruz. Consumer'ı ise, "user.activation.queue" adında bir queue ile register ediyoruz. Bu queue ile "UserRegisteredEvent" model'ine subscribe olacaktır. Deployment Artık uygulamaları deploy etmeye hazırız. Ben deployment işlemlerini gerçekleştirebilmek için basit bir Docker file ve Helm chart hazırladım. Bu chart ile, uygulamaları Azure Kubernetes Service üzerine deploy edeceğim. Siz kendi environment'ınıza göre chart'ı değiştirebilirsiniz. Hazırlamış olduğum chart ve docker file'a, buradan erişebilirsiniz. Test Şimdi test aşamasına geçebiliriz. Öncelikle sistemde yeni bir kullanıcı oluşturabilmek için aşağıda olduğu gibi "api/users" endpoint'ine bir POST request'i gönderelim. Bu request ile kullanıcı kayıt journey'ini başlatmış olduk. Senaryomuzda olduğu gibi, kullanıcı kayıt işlemi gerçekleştikten sonra bir event publish edildi. Event'in publish edilmenin ardından event'e subscribe etmiş olduğumuz aktivasyon e-posta'sını gönderecek olan service (user-activation-consumer) ilgili işlemini gerçekleştirmiştir. Peki bu süreçte neler oldu, haydi Jaeger üzerinden bir bakalım. Jaeger üzerindeki akışa bakarsak, bu işlem 4 derinliğe ve 5 adet span'a sahip. Toplam süreç ise 29.54ms sürmüş. Post işleminin kırılımlara bakarsak ise, request ilgili action'dan geçtikten sonra "create-user-async" method'una geliyor ve içerisinde kullanıcı kayıt işlemleri gerçekleştiriliyor. Ardından ise asenkron olarak aktivasyon link'i gönderme işlemleri "User.Activation.Consumer" service'i içerisinde gerçekleştiriliyor. Gördüğümüz gibi bu journey asenkron olarak gerçekleşiyor olmasına rağmen, bu request nerede, süreç nerede ne kadar zaman harcıyor gibi sorulara cevap alabiliyoruz. Sonuç Distributed tracing ile bir developer olarak microservice mimarisi içerisinde koşturan kodumuzu, request'in life cycle'ını, debug edebilir ve optimize edebiliriz. OpenTracing API'ı ile de, vendor lock-in durumuna düşmeden sistemimizin farklı tracer'lar ile esnek bir şekilde trace edilebilmesini sağlayabiliyoruz. Ayrıca ben bu makalede, distributed bir yapıdaki sistem içerisinde trace bilgilerinin propagation işlemlerini de göstermeye çalıştım. Projects: Referanslar
Projects India - Provides New Projects Information, Latest News & Order Bagged in India. Projects India gives you the latest information on the INVESTMENTS happening across the India with detailed information about the project along with verified concern/key person name, required contact details & involved consultants, contractors & architects.