{"id":424,"date":"2021-04-30T18:07:04","date_gmt":"2021-04-30T16:07:04","guid":{"rendered":"https:\/\/neayi.com\/?p=424"},"modified":"2023-05-02T16:03:46","modified_gmt":"2023-05-02T14:03:46","slug":"lenvironnement-technique-de-neayi","status":"publish","type":"post","link":"https:\/\/neayi.com\/en\/lenvironnement-technique-de-neayi\/","title":{"rendered":"The technical environment of Neayi"},"content":{"rendered":"<p class=\"wp-block-paragraph\">I took advantage of the updating of our environment for taking the time to write a few words about our technical environment...<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Platform <a href=\"https:\/\/en.tripleperformance.ag\" target=\"_blank\" rel=\"noreferrer noopener\">Triple Performance<\/a> is built around two software components : <a href=\"https:\/\/www.mediawiki.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Mediawiki<\/a> on the one hand (the software that runs Wikipedia), and a brick &#034;back-office&#034; developed from a framework <a href=\"https:\/\/laravel.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Laravel<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">All of our software environment running with Docker, which allows you to isolate each software component. Thanks to Docker, we can perfectly reproduce the production environment on the position of each developer, whether it be Windows or Linux. In addition, Docker allows you to finely configure each component of the environment (for example, the version of PHP or MySQL) configuration. Thus, we can test the installed version, by changing a number in a file.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our stack docker is composed of a dozen of containers, each of which plays its own role : <a href=\"https:\/\/doc.traefik.io\/traefik\/\" target=\"_blank\" rel=\"noreferrer noopener\">Traefik<\/a> in proxy for all inbound connections, also manages the updating of certificates for HTTPS (thanks to the extension <a href=\"https:\/\/doc.traefik.io\/traefik\/https\/acme\/\" target=\"_blank\" rel=\"noreferrer noopener\">ACME<\/a>), the software components are each served by their own container (PHP-FPM, Nginx), and we then containers for MySQL, Redis, ElasticSearch, as well as some services like software <a href=\"https:\/\/www.mediawiki.org\/wiki\/Parsoid\" target=\"_blank\" rel=\"noreferrer noopener\">Parsoid<\/a>, which allows the conversion of HTML files to wikitext, and vice versa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#039;re curious, all of our configuration Docker is on <a href=\"https:\/\/github.com\/neayi\/tripleperformance\/blob\/main\/docker-compose.prod.yml\" target=\"_blank\" rel=\"noreferrer noopener\">github<\/a>. An interesting point, our platform is designed from the ground up to allow updates &#034; on the fly &#034;, the images Docker is generated automatically on Github and as additions functional. Thank you <a href=\"https:\/\/www.linkedin.com\/in\/michel-roca-d-huyteza\" target=\"_blank\" rel=\"noreferrer noopener\">Michel Roca to Huyt\u00e9za<\/a> for his assistance and advice on these subjects !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We operate according to the principle of &#034; document by configuration &#034;, which means that the whole of the update process, instance creation, migration, etc... are to be executed by a single command.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Brick back-office is developed in TDD (Test Driven Development) : for each new feature, we first created a test, and the feature is deemed to be complete when the test &#034; passes &#034;. In reality, this mode of development requires an organization of the software and partitioning very own of each layer (implementation, model, controllers, views, storage). Thank you <a href=\"https:\/\/www.linkedin.com\/in\/guillaumecozic\" target=\"_blank\" rel=\"noreferrer noopener\">Guillaume Cozic<\/a> for that, his expertise has been invaluable !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A word finally on Github : to the extent that we believe that knowledge should be a mutual, we believe that the software code must be open and open source. The choice of Github has established itself quickly. Github allows us to not only share and work collaboratively with the various technical stakeholders (source code, bug management, notifications, integration with Slack, etc...), but also allows the connection with systems of continuous integration and <a href=\"https:\/\/scrutinizer-ci.com\/g\/neayi\/insights\/\" target=\"_blank\" rel=\"noreferrer noopener\">the validation of the quality of the code<\/a>, which are pretty fantastic. We are thus alerted if one of our dependency no longer up to date and if there are new <a href=\"https:\/\/github.com\/neayi\/insights\/commit\/98cbddc3fea6cdad313b5ee60563d2a7b006a514\" target=\"_blank\" rel=\"noreferrer noopener\">security alerts<\/a> which require action on our part. For developers who work on our project, this opening serves to faith as a demonstration of their experience, but also requires them to maintain a quality of code and process, knowing that the whole of what they do remains visible of all.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A little story about the awesome power of open source : in a test update, we have had a weird problem (CSS not generated). The CSS file then displayed an error &#034;SCSS compile error&#034; :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>I allowed myself to open up, to 13h09, a <a href=\"https:\/\/github.com\/ProfessionalWiki\/chameleon\/issues\/201\" target=\"_blank\" rel=\"noreferrer noopener\">bug<\/a> at the project level MediaWiki that allows the building of our skin. <\/li>\n\n\n\n<li>To 13h50 I had a <a href=\"https:\/\/github.com\/ProfessionalWiki\/chameleon\/issues\/201#issuecomment-721096595\" target=\"_blank\" rel=\"noreferrer noopener\">first response<\/a>. <\/li>\n\n\n\n<li>To 15h37 a <a href=\"https:\/\/github.com\/scssphp\/scssphp\/issues\/245\" target=\"_blank\" rel=\"noreferrer noopener\">bug<\/a> is then opened by the last person in the library causing the problem. <\/li>\n\n\n\n<li>To 17h32, there were three people in the discussion, and the decision was taken to make a new release of this library with the patch. <\/li>\n\n\n\n<li>Two days later <a href=\"https:\/\/github.com\/scssphp\/scssphp\/releases\/tag\/v1.4.0\" target=\"_blank\" rel=\"noreferrer noopener\">this release was available<\/a> \u2013 without touching anything in our code all to get back to work. Hard to do better ! (Thank you to the contributors, it should be noted that they are widely europeans !).<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/neayi.com\/wp-content\/uploads\/2020\/11\/Thankyou-1024x576.jpg\" alt=\"\" class=\"wp-image-426\" srcset=\"https:\/\/neayi.com\/wp-content\/uploads\/2020\/11\/Thankyou-1024x576.jpg 1024w, https:\/\/neayi.com\/wp-content\/uploads\/2020\/11\/Thankyou-300x169.jpg 300w, https:\/\/neayi.com\/wp-content\/uploads\/2020\/11\/Thankyou-768x432.jpg 768w, https:\/\/neayi.com\/wp-content\/uploads\/2020\/11\/Thankyou.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>","protected":false},"excerpt":{"rendered":"<p>I took advantage of the updating of our environment for taking the time to write a few words about our technical environment... The platform Triple Performance is built around two software components : Mediawiki on the one hand (the software that runs Wikipedia), and a brick &#034;back-office&#034; developed from a framework Laravel. All of our...&nbsp;<a href=\"https:\/\/neayi.com\/en\/lenvironnement-technique-de-neayi\/\" rel=\"bookmark\">Read More &raquo;<span class=\"screen-reader-text\">The technical environment of Neayi<\/span><\/a><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"none","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"both","_seopress_redirections_param":"","_seopress_redirections_type":301,"_seopress_analysis_target_kw":"","content-type":"","neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[5],"tags":[],"class_list":["post-424","post","type-post","status-publish","format-standard","hentry","category-articles"],"_links":{"self":[{"href":"https:\/\/neayi.com\/en\/wp-json\/wp\/v2\/posts\/424","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/neayi.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/neayi.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/neayi.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/neayi.com\/en\/wp-json\/wp\/v2\/comments?post=424"}],"version-history":[{"count":5,"href":"https:\/\/neayi.com\/en\/wp-json\/wp\/v2\/posts\/424\/revisions"}],"predecessor-version":[{"id":934,"href":"https:\/\/neayi.com\/en\/wp-json\/wp\/v2\/posts\/424\/revisions\/934"}],"wp:attachment":[{"href":"https:\/\/neayi.com\/en\/wp-json\/wp\/v2\/media?parent=424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/neayi.com\/en\/wp-json\/wp\/v2\/categories?post=424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/neayi.com\/en\/wp-json\/wp\/v2\/tags?post=424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}