{"id":2908,"date":"2025-08-28T11:04:32","date_gmt":"2025-08-28T02:04:32","guid":{"rendered":"https:\/\/wi-th.com\/?p=2908"},"modified":"2025-08-28T12:16:47","modified_gmt":"2025-08-28T03:16:47","slug":"capacidade-de-processamento-da-otimizacao-da-coocorrencia-especifica-da-lingua","status":"publish","type":"post","link":"https:\/\/wi-th.com\/pt\/ele\/capacidade-de-processamento-da-otimizacao-da-coocorrencia-especifica-da-lingua\/","title":{"rendered":"Capacidade de processamento da otimiza\u00e7\u00e3o da coocorr\u00eancia espec\u00edfica da l\u00edngua"},"content":{"rendered":"<p>Analisemos os hom\u00f3grafos que cada l\u00edngua pode tratar.<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title ez-toc-toggle\" style=\"cursor:pointer\">\u00cdndice<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Alternar<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/wi-th.com\/pt\/ele\/capacidade-de-processamento-da-otimizacao-da-coocorrencia-especifica-da-lingua\/#8%EC%BD%94%EC%96%B4_16%EC%93%B0%EB%A0%88%EB%93%9C_%EC%BD%94%ED%81%B4%EB%9F%AD_CPU%EB%A1%9C_%EA%B5%AC%EB%8F%99%EC%8B%9C_%EB%8F%99%EC%A0%91%EC%88%98\" >Tandem quando executado numa CPU de 8 n\u00facleos e 16 threads com co-clock<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/wi-th.com\/pt\/ele\/capacidade-de-processamento-da-otimizacao-da-coocorrencia-especifica-da-lingua\/#%ED%94%BC%ED%95%98%EA%B1%B0%EB%82%98_%EC%8B%A0%EC%A4%91%ED%9E%88_%EC%93%B8_%EC%96%B8%EC%96%B4%EB%9F%B0%ED%83%80%EC%9E%84_%EB%8B%A8%EC%9D%BC_%EC%84%9C%EB%B2%84_%EB%8F%99%EC%A0%91%EC%88%98%EC%97%90_%EB%B6%88%EB%A6%AC\" >Linguagens\/tempos de execu\u00e7\u00e3o a evitar ou a utilizar com cuidado (desvantagem para a co-localiza\u00e7\u00e3o de um \u00fanico servidor)<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/wi-th.com\/pt\/ele\/capacidade-de-processamento-da-otimizacao-da-coocorrencia-especifica-da-lingua\/#%EB%8F%99%EC%A0%91%EC%88%98%EB%A5%BC_%E2%80%9C%EC%9E%A1%EC%95%84%EB%A8%B9%EB%8A%94%E2%80%9D_%EA%B3%B5%ED%86%B5_%ED%8C%A8%ED%84%B4_%EC%96%B8%EC%96%B4_%EB%B6%88%EB%AC%B8_%EB%B0%98%EB%93%9C%EC%8B%9C_%ED%94%BC%ED%95%98%EA%B8%B0\" >Padr\u00f5es comuns que \"comem\" ger\u00fandios (independentemente da l\u00edngua, evite-os a todo o custo)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/wi-th.com\/pt\/ele\/capacidade-de-processamento-da-otimizacao-da-coocorrencia-especifica-da-lingua\/#%EC%96%B4%EC%A9%94_%EC%88%98_%EC%97%86%EC%9D%B4_%EC%8D%A8%EC%95%BC_%ED%95%A0_%EB%95%8C%EC%9D%98_%E2%80%9C%EC%83%9D%EC%A1%B4_%EC%84%B8%ED%8A%B8%E2%80%9D\" >Um \"conjunto de sobreviv\u00eancia\" para quando tiver de o utilizar<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/wi-th.com\/pt\/ele\/capacidade-de-processamento-da-otimizacao-da-coocorrencia-especifica-da-lingua\/#%EA%B6%8C%EC%9E%A5_%EC%A1%B0%ED%95%A9_8%EC%BD%94%EC%96%B4_16%EC%8A%A4%EB%A0%88%EB%93%9C_%EB%8F%99%EC%A0%91%EC%88%98_%EC%B5%9C%EC%A0%81%ED%99%94\" >Combina\u00e7\u00e3o recomendada (8 n\u00facleos 16 threads, optimizada para co-localiza\u00e7\u00e3o)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/wi-th.com\/pt\/ele\/capacidade-de-processamento-da-otimizacao-da-coocorrencia-especifica-da-lingua\/#%EC%B5%9C%EC%9A%B0%EC%84%A0_%EC%B6%94%EC%B2%9C_%ED%95%B5%EC%8B%AC_API%EB%8C%80%EB%B6%80%EB%B6%84%EC%9D%98_%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4\" >Principais recomenda\u00e7\u00f5es (APIs principais\/maioria dos microsservi\u00e7os)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/wi-th.com\/pt\/ele\/capacidade-de-processamento-da-otimizacao-da-coocorrencia-especifica-da-lingua\/#%EC%B4%88%EA%B3%A0%EC%84%B1%EB%8A%A5%C2%B7%EC%A7%80%EC%97%B0_%EB%AF%BC%EA%B0%90_%EA%B5%AC%EA%B0%84\" >Desempenho ultra-elevado - sec\u00e7\u00f5es sens\u00edveis \u00e0 lat\u00eancia<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/wi-th.com\/pt\/ele\/capacidade-de-processamento-da-otimizacao-da-coocorrencia-especifica-da-lingua\/#%EC%8B%A4%EC%8B%9C%EA%B0%84%EC%B1%84%ED%8C%85%EB%8C%80%EB%9F%89_WebSocket\" >WebSockets em tempo real\/chat\/bulk<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/wi-th.com\/pt\/ele\/capacidade-de-processamento-da-otimizacao-da-coocorrencia-especifica-da-lingua\/#%ED%8C%80%EC%97%90_Java_%EC%97%AD%EB%9F%89%EC%9D%B4_%EA%B0%95%ED%95%A0_%EB%95%8C_%EB%8C%80%EC%95%88\" >Alternativas quando a sua equipa tem fortes compet\u00eancias em Java<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/wi-th.com\/pt\/ele\/capacidade-de-processamento-da-otimizacao-da-coocorrencia-especifica-da-lingua\/#%EB%B3%B4%EC%A1%B0%EC%A3%BC%EB%B3%80_%EC%9A%A9%EB%8F%84%E2%80%9C%ED%95%AB%ED%8C%A8%EC%8A%A4%E2%80%9D%EC%97%94_%EB%B9%84%EC%B6%94\" >Utiliza\u00e7\u00f5es secund\u00e1rias\/perif\u00e9ricas (n\u00e3o para \"hot passes\")<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/wi-th.com\/pt\/ele\/capacidade-de-processamento-da-otimizacao-da-coocorrencia-especifica-da-lingua\/#%EA%B6%8C%EC%9E%A5_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98_%ED%95%9C_%EC%9E%A5_%EC%9A%94%EC%95%BD\" >Resumo de um cap\u00edtulo da arquitetura recomendada<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/wi-th.com\/pt\/ele\/capacidade-de-processamento-da-otimizacao-da-coocorrencia-especifica-da-lingua\/#%EC%84%A0%ED%83%9D_%EA%B8%B0%EC%A4%80%EC%8B%A4%EB%AC%B4_%EC%B2%B4%ED%81%AC%EB%A6%AC%EC%8A%A4%ED%8A%B8\" >Crit\u00e9rios de sele\u00e7\u00e3o (lista de verifica\u00e7\u00e3o pr\u00e1tica)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/wi-th.com\/pt\/ele\/capacidade-de-processamento-da-otimizacao-da-coocorrencia-especifica-da-lingua\/#8C16T_%EC%84%9C%EB%B2%84_%ED%95%9C_%EB%8C%80_%EA%B8%B0%EC%A4%80_%EB%8F%99%EC%A0%91%EC%88%98_%EB%AA%A9%ED%91%9C%EC%B9%98\" >(Concorr\u00eancia pretendida com base num servidor 8C16T)<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"8%EC%BD%94%EC%96%B4_16%EC%93%B0%EB%A0%88%EB%93%9C_%EC%BD%94%ED%81%B4%EB%9F%AD_CPU%EB%A1%9C_%EA%B5%AC%EB%8F%99%EC%8B%9C_%EB%8F%99%EC%A0%91%EC%88%98\"><\/span>Tandem quando executado numa CPU de 8 n\u00facleos e 16 threads com co-clock<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>L\u00ednguas\/Frameworks<\/th><th>Modelos de processamento<\/th><th>Taxa de transfer\u00eancia de pedidos por segundo (RPS)<\/th><th>N\u00famero de concatena\u00e7\u00f5es persistentes<\/th><th>Carater\u00edsticas<\/th><\/tr><\/thead><tbody><tr><td><strong>C \/ C++ (nginx, personalizado)<\/strong><\/td><td>Ciclo de eventos, epoll<\/td><td><strong>1,5 a 2 milh\u00f5es de RPS<\/strong><\/td><td><strong>200.000 a 400.000 la\u00e7os<\/strong><\/td><td>Melhor desempenho nativo, pr\u00f3ximo da chamada de sistema<\/td><\/tr><tr><td><strong>Go (Gin\/Fiber, gRPC)<\/strong><\/td><td>Threads ligeiras (goroutines), ass\u00edncronas<\/td><td><strong>50 a 1 milh\u00e3o RPS<\/strong><\/td><td><strong>10-20k la\u00e7os<\/strong><\/td><td>Eficiente em termos de mem\u00f3ria, altamente concorrente, \u00f3timo para microsservi\u00e7os<\/td><\/tr><tr><td><strong>Ferrugem (Actix, Tokio)<\/strong><\/td><td>ass\u00edncrono\/espera, custo zero<\/td><td><strong>80-1,5 milh\u00f5es RPS<\/strong><\/td><td><strong>15-25 milh\u00f5es de la\u00e7os<\/strong><\/td><td>Seguran\u00e7a e desempenho ao mesmo tempo, ruidoso e com uma curva de aprendizagem<\/td><\/tr><tr><td><strong>Java (Spring Boot + Netty)<\/strong><\/td><td>Threadpool, NIO Async<\/td><td><strong>300.000 a 600.000 RPS<\/strong><\/td><td><strong>5-10 milh\u00f5es de la\u00e7os<\/strong><\/td><td>Requer ajuste de GC, popular para grandes servi\u00e7os<\/td><\/tr><tr><td><strong>Node.js (Express\/Fastify)<\/strong><\/td><td>Loops de eventos de um s\u00f3 segmento<\/td><td><strong>15 a 400.000 RPS<\/strong><\/td><td><strong>3-7 milh\u00f5es de la\u00e7os<\/strong><\/td><td>Forte em E\/S, fraco em tarefas pesadas da CPU<\/td><\/tr><tr><td><strong>PHP (Laravel + PHP-FPM)<\/strong><\/td><td>Baseado em processos, baixa simultaneidade<\/td><td><strong>5-10k RPS<\/strong><\/td><td><strong>Apenas 1 a 3 tangentes<\/strong><\/td><td>Armazenamento em cache - equil\u00edbrio de carga essencial, estrangulamentos de E\/S de BD<\/td><\/tr><tr><td><strong>Python (Django\/Flask, Gunicorn+Uvicorn)<\/strong><\/td><td>WSGI\/ASGI, multithreaded<\/td><td><strong>30 a 80 mil RPS<\/strong><\/td><td><strong>5.000 a 20.000 la\u00e7os<\/strong><\/td><td>Processamento de dados - forte para ML, ineficiente para servidores Web<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Co-ocorr\u00eancias por l\u00edngua \u00a9 <a href=\"http:\/\/wi-th.com\/pt\/\" data-type=\"link\" data-id=\"wi-th.com\">wi-th.com<\/a><\/figcaption><\/figure>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%ED%94%BC%ED%95%98%EA%B1%B0%EB%82%98_%EC%8B%A0%EC%A4%91%ED%9E%88_%EC%93%B8_%EC%96%B8%EC%96%B4%EB%9F%B0%ED%83%80%EC%9E%84_%EB%8B%A8%EC%9D%BC_%EC%84%9C%EB%B2%84_%EB%8F%99%EC%A0%91%EC%88%98%EC%97%90_%EB%B6%88%EB%A6%AC\"><\/span>Linguagens\/tempos de execu\u00e7\u00e3o a evitar ou a utilizar com cuidado (desvantagem para a co-localiza\u00e7\u00e3o de um \u00fanico servidor)<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>PHP (Laravel\/WordPress + PHP-FPM)<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Porque \u00e9 que \u00e9 fraco<\/strong>Processo\/trabalhador fixo por pedido (tamanho da pool = limite superior co-localizado), bloqueio por defeito para E\/S com muitas armas, sobrecarga de arranque para cada pedido.<\/li>\n\n\n\n<li><strong>Complemento<\/strong>Octane\/RoadRunner\/Swoole (longa execu\u00e7\u00e3o), cache de API de p\u00e1gina (Cloudflare\/Redis), dessincroniza\u00e7\u00e3o de fila, pr\u00e9-renderiza\u00e7\u00e3o, APIs somente leitura s\u00e3o armazenadas no cache do Edge.<\/li>\n<\/ul>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>Python (fam\u00edlia Django\/Flask WSGI)<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Porque \u00e9 que \u00e9 fraco<\/strong>WSGI \u00e9 a sincroniza\u00e7\u00e3o\/bloqueio por defeito, <strong>GIL<\/strong>Limita\u00e7\u00f5es de simultaneidade ligadas \u00e0 CPU, elevadas despesas gerais por objeto\/GC.<\/li>\n\n\n\n<li><strong>Complemento<\/strong>ASGI (Starlette\/FastAPI) + Uvicorn\/Hypercorn, todas as E\/S ass\u00edncronas, tarefas da CPU separadas em microsservi\u00e7os Celery\/Go\/Rust.<\/li>\n<\/ul>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>Rubi (Rails)<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Porque \u00e9 que \u00e9 fraco<\/strong>: MRI \u00e9 um GIL real, ganho multithreaded limitado \u2192 escalonamento multiprocessos \u00e9 nativo (mem\u00f3ria\u2191), ORM-metaprograma\u00e7\u00e3o overheads.<\/li>\n\n\n\n<li><strong>Complemento<\/strong>Puma worker minimisation + threadpool tuning, cache fronting, hotpassing para Go\/Rust.<\/li>\n<\/ul>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li><strong>Node.js (Express, etc.) - quando ligado \u00e0 CPU<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Porque \u00e9 que \u00e9 fraco<\/strong>: Loop de evento \u00fanico <strong>Trabalho pesado da CPU \/ grandes serializa\u00e7\u00f5es JSON \/ c\u00f3digo s\u00edncrono<\/strong>bloqueia o la\u00e7o, causando um mergulho tangencial.<\/li>\n\n\n\n<li><strong>Complemento<\/strong>Fastify: Fastify, totalmente ass\u00edncrono, <strong>threads_trabalhadores\/Cluster<\/strong>para separar tarefas da CPU, transmitir JSON e descarregar tarefas da CPU para Go\/Rust.<\/li>\n<\/ul>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li><strong>Bloqueio tradicional estilo Java\/C# (thread-per-request)<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Porque \u00e9 que \u00e9 fraco<\/strong>: n\u00famero de conex\u00f5es\u2191 = n\u00famero de threads\u2191 = troca de contexto\/mem\u00f3ria\u2191. Os limites do GC\/threadpool s\u00e3o logo limites superiores tangenciais.<\/li>\n\n\n\n<li><strong>Complemento<\/strong>: Java utiliza o <strong>Netty\/Undertow, Spring WebFlux<\/strong>(NIO) ou <strong>Virtual Threads (Project Loom)<\/strong>e C# \u00e9 <strong>async\/await + Kestrel<\/strong> Ativo, sintoniza\u00e7\u00e3o GC (ZGC\/G1).<\/li>\n<\/ul>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%EB%8F%99%EC%A0%91%EC%88%98%EB%A5%BC_%E2%80%9C%EC%9E%A1%EC%95%84%EB%A8%B9%EB%8A%94%E2%80%9D_%EA%B3%B5%ED%86%B5_%ED%8C%A8%ED%84%B4_%EC%96%B8%EC%96%B4_%EB%B6%88%EB%AC%B8_%EB%B0%98%EB%93%9C%EC%8B%9C_%ED%94%BC%ED%95%98%EA%B8%B0\"><\/span>Padr\u00f5es comuns que \"comem\" ger\u00fandios (independentemente da l\u00edngua, evite-os a todo o custo)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Bloqueio de E\/S<\/strong>(BD\/API externa) + grupo de liga\u00e7\u00f5es reduzido \u2192 os trabalhadores apenas esperam<\/li>\n\n\n\n<li><strong>Consultas N+1\/ ORMs pesados<\/strong>(abuso de carregamento pregui\u00e7oso)<\/li>\n\n\n\n<li><strong>Serializa\u00e7\u00e3o\/deserializa\u00e7\u00e3o JSON de grande dimens\u00e3o<\/strong>(Carregar a mem\u00f3ria de uma s\u00f3 vez)<\/li>\n\n\n\n<li><strong>E\/S s\u00edncrona de registo\/ficheiro<\/strong>(limpar o disco a cada pedido)<\/li>\n\n\n\n<li><strong>Guardar sess\u00f5es de forma s\u00edncrona na base de dados<\/strong>(conten\u00e7\u00e3o de bloqueios)<\/li>\n\n\n\n<li><strong>Explos\u00e3o de express\u00f5es regulares\/renderiza\u00e7\u00e3o de modelos duplicados<\/strong><\/li>\n\n\n\n<li><strong>TLS handshake em cada pedido<\/strong>(sem Keep-Alive\/HTTP\/2)<\/li>\n\n\n\n<li><strong>Sem cache<\/strong>(Sem CDN\/Redis, basta aceder ao servidor de origem)<\/li>\n<\/ul>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%EC%96%B4%EC%A9%94_%EC%88%98_%EC%97%86%EC%9D%B4_%EC%8D%A8%EC%95%BC_%ED%95%A0_%EB%95%8C%EC%9D%98_%E2%80%9C%EC%83%9D%EC%A1%B4_%EC%84%B8%ED%8A%B8%E2%80%9D\"><\/span>Um \"conjunto de sobreviv\u00eancia\" para quando tiver de o utilizar<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cache de borda primeiro<\/strong>Cache do Cloudflare, Stale-While-Revalidate, Cache de resultados da API (TTL deslizante)<\/li>\n\n\n\n<li><strong>Separa\u00e7\u00e3o de leitura\/escrita<\/strong>Async para cache\/reduplica\u00e7\u00e3o para leituras, fila de espera para escritas<\/li>\n\n\n\n<li><strong>Desconex\u00e3o de hotpaths<\/strong>O carregamento\/redimensionamento de imagens\/recomenda\u00e7\u00e3o\/pesquisa, etc. \u00e9 efectuado utilizando o <strong>Ir\/ferrugem<\/strong> Desacoplamento em microsservi\u00e7os<\/li>\n\n\n\n<li><strong>Processamento cont\u00ednuo do servidor<\/strong>O PHP utiliza o <strong>Octano\/RoadRunner<\/strong>, Python utiliza <strong>ASGI<\/strong>para<\/li>\n\n\n\n<li><strong>Esquema\/dieta de consulta<\/strong>Remover N+1, \u00cdndice\/Cobertura, Minimizar jun\u00e7\u00f5es, Minimizar sele\u00e7\u00e3o de colunas<\/li>\n\n\n\n<li><strong>Transmiss\u00e3o em fluxo cont\u00ednuo<\/strong>JSON\/ficheiros s\u00e3o fluxos, comprimidos\/chunked, HTTP\/2<\/li>\n\n\n\n<li><strong>Observabilidade<\/strong>Monitoriza\u00e7\u00e3o do atraso do P99\/enfileiramento de filas\/utiliza\u00e7\u00e3o do pool \u2192 Cache\/separa\u00e7\u00e3o de estrangulamentos em tempo real<\/li>\n<\/ul>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%EA%B6%8C%EC%9E%A5_%EC%A1%B0%ED%95%A9_8%EC%BD%94%EC%96%B4_16%EC%8A%A4%EB%A0%88%EB%93%9C_%EB%8F%99%EC%A0%91%EC%88%98_%EC%B5%9C%EC%A0%81%ED%99%94\"><\/span>Combina\u00e7\u00e3o recomendada (8 n\u00facleos 16 threads, optimizada para co-localiza\u00e7\u00e3o)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>API\/Tempo real<\/strong>: <strong>Go (Gin\/Fiber) ou Rust (Actix\/Tokio)<\/strong><\/li>\n\n\n\n<li><strong>Servi\u00e7o Web\/Est\u00e1tico<\/strong>: <strong>nginx\/Caddy + Cloudflare<\/strong><\/li>\n\n\n\n<li><strong>WebSocket\/Chat altamente simult\u00e2neo<\/strong>: <strong>Elixir (F\u00e9nix)\/Vai<\/strong><\/li>\n\n\n\n<li><strong>Back Office\/Conte\u00fado<\/strong>: PHP (Laravel\/Filament), mas n\u00e3o <strong>Premissa da fila de cache<\/strong><\/li>\n\n\n\n<li><strong>Quando Java \u00e9 selecionado<\/strong>: <strong>Netty\/WebFlux<\/strong> ou <strong>Tear (fios virtuais)<\/strong> Base + afina\u00e7\u00e3o ZGC<\/li>\n<\/ul>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%EC%B5%9C%EC%9A%B0%EC%84%A0_%EC%B6%94%EC%B2%9C_%ED%95%B5%EC%8B%AC_API%EB%8C%80%EB%B6%80%EB%B6%84%EC%9D%98_%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4\"><\/span>Principais recomenda\u00e7\u00f5es (APIs principais\/maioria dos microsservi\u00e7os)<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p><strong>Go (Gin\/Fiber, gRPC, net\/http2)<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Porqu\u00ea<\/strong>E\/S ass\u00edncrona \u2192 maior efici\u00eancia de co-localiza\u00e7\u00e3o no mesmo hardware, pequena pegada de mem\u00f3ria, simples de implementar.<\/li>\n\n\n\n<li><strong>Sentido de escala<\/strong>(8 n\u00facleos\/16 threads, pressupondo afina\u00e7\u00e3o + cache): <strong>100.000 a 200.000 correntes sustentadas<\/strong> \/ <strong>Centenas de milhares de RPS<\/strong> Sim.<\/li>\n\n\n\n<li><strong>Onde<\/strong>APIs de leitura intensa, BFFs, manipuladores de carregamento de imagens, callbacks de pagamento, gateways de refer\u00eancia\/pesquisa e outros \"hot passes\".<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%EC%B4%88%EA%B3%A0%EC%84%B1%EB%8A%A5%C2%B7%EC%A7%80%EC%97%B0_%EB%AF%BC%EA%B0%90_%EA%B5%AC%EA%B0%84\"><\/span>Desempenho ultra-elevado - sec\u00e7\u00f5es sens\u00edveis \u00e0 lat\u00eancia<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p><strong>Rust (Actix\/Tokio)<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Porqu\u00ea<\/strong>: abstra\u00e7\u00e3o de custo zero, ass\u00edncrono\/espera, seguran\u00e7a de mem\u00f3ria + desempenho de classe nativa.<\/li>\n\n\n\n<li><strong>Sentido de escala<\/strong>: <strong>15-25 milh\u00f5es de utilizadores simult\u00e2neos<\/strong>, p95 Forte contra a minimiza\u00e7\u00e3o dos atrasos.<\/li>\n\n\n\n<li><strong>Onde<\/strong>\u00c1reas sens\u00edveis \u00e0 mem\u00f3ria da CPU: recomenda\u00e7\u00f5es\/classifica\u00e7\u00f5es, grandes convers\u00f5es JSON\/Protobuf, processamento de imagens, agrega\u00e7\u00e3o de feeds em tempo real.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%EC%8B%A4%EC%8B%9C%EA%B0%84%EC%B1%84%ED%8C%85%EB%8C%80%EB%9F%89_WebSocket\"><\/span>WebSockets em tempo real\/chat\/bulk<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p><strong>Elixir (F\u00e9nix, BEAM)<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Porqu\u00ea<\/strong>Milh\u00f5es de processos, concorr\u00eancia leve, excelente resist\u00eancia a falhas.<\/li>\n\n\n\n<li><strong>Sentido de escala<\/strong>: <strong>Canais WS 10-20k sess\u00f5es simult\u00e2neas\/servidor<\/strong> Muitas refer\u00eancias pr\u00e1ticas.<\/li>\n\n\n\n<li><strong>Onde<\/strong>Chat, Centro de notifica\u00e7\u00f5es, Transmiss\u00e3o em direto de jogos\/leil\u00f5es, Presen\u00e7a.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%ED%8C%80%EC%97%90_Java_%EC%97%AD%EB%9F%89%EC%9D%B4_%EA%B0%95%ED%95%A0_%EB%95%8C_%EB%8C%80%EC%95%88\"><\/span>Alternativas quando a sua equipa tem fortes compet\u00eancias em Java<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p><strong>Java (Netty\/Undertow, Spring WebFlux ou Loom)<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Porqu\u00ea<\/strong>Escalonamento co-localizado bom quando se utiliza um ecossistema maduro + NIO (ou threads virtuais).<\/li>\n\n\n\n<li><strong>Sentido de escala<\/strong>: <strong>5-10k correntes cont\u00ednuas<\/strong>(pode ser superior consoante a natureza do servi\u00e7o).<\/li>\n\n\n\n<li><strong>Onde<\/strong>Dom\u00ednio complexo, ambiente normalizado de uma grande organiza\u00e7\u00e3o.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%EB%B3%B4%EC%A1%B0%EC%A3%BC%EB%B3%80_%EC%9A%A9%EB%8F%84%E2%80%9C%ED%95%AB%ED%8C%A8%EC%8A%A4%E2%80%9D%EC%97%94_%EB%B9%84%EC%B6%94\"><\/span>Utiliza\u00e7\u00f5es secund\u00e1rias\/perif\u00e9ricas (n\u00e3o para \"hot passes\")<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Node.js<\/strong>Adaptador ass\u00edncrono - apenas BFF-SSR (Next.js). Separar tarefas pesadas da CPU em trabalhadores\/servi\u00e7os separados.<\/li>\n\n\n\n<li><strong>PHP (Laravel)<\/strong>: <strong>Administra\u00e7\u00e3o\/Back Office\/CMS<\/strong> Dedicado. Em produ\u00e7\u00e3o <strong>Octane\/RoadRunner + cache Redis<\/strong> Premissa.<\/li>\n\n\n\n<li><strong>Python<\/strong>: excluir caminho do pedido. <strong>Lote\/ML Pipeline\/Data Workers<\/strong>Romano.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%EA%B6%8C%EC%9E%A5_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98_%ED%95%9C_%EC%9E%A5_%EC%9A%94%EC%95%BD\"><\/span>Resumo de um cap\u00edtulo da arquitetura recomendada<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Borda\/Cache<\/strong>: Cloudflare (regras de cache, Stale-While-Revalidate)<\/li>\n\n\n\n<li><strong>Portas de entrada<\/strong>Nginx\/Envoy + HTTP\/2 (mistura de gRPC\/REST)<\/li>\n\n\n\n<li><strong>APIs principais<\/strong>: <strong>Ir<\/strong> Em primeiro lugar, as bandas de desempenho ultra-elevado s\u00e3o <strong>Ferrugem<\/strong><\/li>\n\n\n\n<li><strong>Em tempo real<\/strong>: <strong>Elixir (Canais F\u00e9nix)<\/strong><\/li>\n\n\n\n<li><strong>Back Office\/Conte\u00fado<\/strong>: <strong>Laravel (+Octano)<\/strong> ou CMS sem cabe\u00e7a<\/li>\n\n\n\n<li><strong>Dados<\/strong>: Postgres (+replicas de leitura), Redis, Meilisearch\/Elastic, ClickHouse (registos\/agrega\u00e7\u00f5es)<\/li>\n\n\n\n<li><strong>Mensagem\/ Fila de espera<\/strong>NATS\/Kafka, a fila de trabalho \u00e9 um trabalhador Go\/Rust<\/li>\n\n\n\n<li><strong>Media<\/strong>: Microsservi\u00e7o de convers\u00e3o de imagens (Go\/Rust) + S3\/R2<\/li>\n\n\n\n<li><strong>Observabilidade<\/strong>Monitoriza\u00e7\u00e3o permanente de: pain\u00e9is de controlo p95\/p99, Pool de liga\u00e7\u00f5es, GC (na sua l\u00edngua)<\/li>\n<\/ul>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%EC%84%A0%ED%83%9D_%EA%B8%B0%EC%A4%80%EC%8B%A4%EB%AC%B4_%EC%B2%B4%ED%81%AC%EB%A6%AC%EC%8A%A4%ED%8A%B8\"><\/span>Crit\u00e9rios de sele\u00e7\u00e3o (lista de verifica\u00e7\u00e3o pr\u00e1tica)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Os hotpaths est\u00e3o dispon\u00edveis no Go\/Rust<\/strong>(determinado durante a fase inicial do projeto)<\/li>\n\n\n\n<li><strong>Em tempo real<\/strong> Separar o Elixir num dom\u00ednio distinto para uma procura elevada<\/li>\n\n\n\n<li><strong>Produtividade administrativa\/operacional<\/strong>Este back office priorit\u00e1rio \u00e9 Laravel (+Octane)<\/li>\n\n\n\n<li><strong>N\u00f3<\/strong>\u00e9 minimizado para renderiza\u00e7\u00e3o web\/BFF\/gateways<\/li>\n\n\n\n<li>Para integra\u00e7\u00f5es padr\u00e3o\/legado de grandes equipas, utilize o <strong>Java WebFlux\/Loom<\/strong> Considerar<\/li>\n<\/ol>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"8C16T_%EC%84%9C%EB%B2%84_%ED%95%9C_%EB%8C%80_%EA%B8%B0%EC%A4%80_%EB%8F%99%EC%A0%91%EC%88%98_%EB%AA%A9%ED%91%9C%EC%B9%98\"><\/span>(Concorr\u00eancia pretendida com base num servidor 8C16T)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ir para a API<\/strong>: co-aceita\u00e7\u00e3o persistente <strong>10-20k<\/strong>(s\u00f3 de leitura), p95 &lt; 50ms<\/li>\n\n\n\n<li><strong>HotPass Ferrugem<\/strong>(Recomenda\u00e7\u00e3o\/Agrega\u00e7\u00e3o): p95 &lt; 20ms, utiliza\u00e7\u00e3o da CPU est\u00e1vel<\/li>\n\n\n\n<li><strong>Elixir em tempo real<\/strong>: Sess\u00e3o WS <strong>100k<\/strong> Manter a estabilidade<\/li>\n\n\n\n<li><strong>Administrador de Laravel<\/strong>: premissa de cache Octane + Redis, APIs\/DBs externas s\u00e3o separadas em filas ass\u00edncronas<\/li>\n<\/ul>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Separa\u00e7\u00e3o<\/th><th>L\u00ednguas\/Frameworks<\/th><th>Rendimento coincidente cont\u00ednuo<\/th><th>Pr\u00f3s<\/th><th>Adequado para<\/th><\/tr><\/thead><tbody><tr><td><strong>Prioridade m\u00e1xima<\/strong><\/td><td><strong>Go (Gin\/Fiber, gRPC)<\/strong><\/td><td>10-20k<\/td><td>Fios leves, maior efici\u00eancia de E\/S, simples de implementar<\/td><td>APIs principais, BFFs, Uploads, Callbacks de pagamento<\/td><\/tr><tr><td><strong>Desempenho ultra-elevado<\/strong><\/td><td><strong>Rust (Actix\/Tokio)<\/strong><\/td><td>15-25 milh\u00f5es<\/td><td>Desempenho e seguran\u00e7a de classe nativa<\/td><td>Recomenda\u00e7\u00f5es\/Rankings, Processamento de imagem\/dados<\/td><\/tr><tr><td><strong>Em tempo real<\/strong><\/td><td><strong>Elixir (F\u00e9nix)<\/strong><\/td><td>100.000 a 200.000 sess\u00f5es WS<\/td><td>Maci\u00e7amente simult\u00e2neo, resiliente<\/td><td>Chat, notifica\u00e7\u00f5es e transmiss\u00f5es em direto<\/td><\/tr><tr><td><strong>Compat\u00edvel com as empresas<\/strong><\/td><td><strong>Java (WebFlux, Loom)<\/strong><\/td><td>5-10k<\/td><td>Ecossistema maduro, NIO\/Ter\u00e7os virtuais<\/td><td>Dom\u00ednios complexos, grandes sistemas<\/td><\/tr><tr><td><strong>Secund\u00e1rio<\/strong><\/td><td>Node.js<\/td><td>30-70k<\/td><td>Desenvolvimento r\u00e1pido, E\/S ass\u00edncronas<\/td><td>SSR, BFF e APIs leves<\/td><\/tr><tr><td><strong>Secund\u00e1rio<\/strong><\/td><td>PHP (Laravel+Octane)<\/td><td>1 a 3 milh\u00f5es<\/td><td>Produtividade, riqueza do ecossistema<\/td><td>Back Office, CMS, Administra\u00e7\u00e3o<\/td><\/tr><tr><td><strong>Secund\u00e1rio<\/strong><\/td><td>Python (ASGI)<\/td><td>0.5-20k<\/td><td>Pontos fortes dos dados\/ML<\/td><td>Lote, pipelines de dados<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Co-ocorr\u00eancias por l\u00edngua \u00a9 <a href=\"http:\/\/wi-th.com\/pt\/\" data-type=\"link\" data-id=\"wi-th.com\">wi-th.com<\/a><\/figcaption><\/figure>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"970\" height=\"90\" src=\"https:\/\/wi-th.com\/wp-content\/uploads\/2025\/08\/in-te-ri-or_logo_1.png\" alt=\"Microsservi\u00e7os \u24d2 wi-th.com\" class=\"wp-image-2906\" srcset=\"\/\/wi-th.com\/wp-content\/uploads\/2025\/08\/in-te-ri-or_logo_1.png 970w, \/\/wi-th.com\/wp-content\/uploads\/2025\/08\/in-te-ri-or_logo_1-665x62.png 665w, \/\/wi-th.com\/wp-content\/uploads\/2025\/08\/in-te-ri-or_logo_1-300x28.png 300w, \/\/wi-th.com\/wp-content\/uploads\/2025\/08\/in-te-ri-or_logo_1-768x71.png 768w\" sizes=\"(max-width: 970px) 100vw, 970px\" \/><figcaption class=\"wp-element-caption\">Tudo o que \u00e9 interior <a href=\"http:\/\/dknock.in-te-ri-or.com\" data-type=\"link\" data-id=\"dknock.in-te-ri-or.com\" target=\"_blank\" rel=\"noopener\">In-The-Rear.com<\/a><\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"970\" height=\"90\" src=\"https:\/\/wi-th.com\/wp-content\/uploads\/2025\/08\/dknock_banner_1.png\" alt=\"dknock.in-te-ri-or.com\" class=\"wp-image-2924\" srcset=\"\/\/wi-th.com\/wp-content\/uploads\/2025\/08\/dknock_banner_1.png 970w, \/\/wi-th.com\/wp-content\/uploads\/2025\/08\/dknock_banner_1-665x62.png 665w, \/\/wi-th.com\/wp-content\/uploads\/2025\/08\/dknock_banner_1-300x28.png 300w, \/\/wi-th.com\/wp-content\/uploads\/2025\/08\/dknock_banner_1-768x71.png 768w\" sizes=\"(max-width: 970px) 100vw, 970px\" \/><figcaption class=\"wp-element-caption\">Especialistas em interiores \u24d2 <a href=\"http:\/\/dknock.in-te-ri-or.com\" data-type=\"link\" data-id=\"dknock.in-te-ri-or.com\" target=\"_blank\" rel=\"noopener\">dknock<\/a><\/figcaption><\/figure>","protected":false},"excerpt":{"rendered":"<p>\uc5b8\uc5b4\ub9c8\ub2e4 \ucc98\ub9ac\ud560 \uc218 \uc788\ub294 \ub3d9\uc811\uc218\ub97c \ubd84\uc11d\ud574 \ubcf4\uc790. 8\ucf54\uc5b4 16\uc4f0\ub808\ub4dc \ucf54\ud074\ub7ed CPU\ub85c \uad6c\ub3d9\uc2dc \ub3d9\uc811\uc218 \uc5b8\uc5b4\/\ud504\ub808\uc784\uc6cc\ud06c \ucc98\ub9ac \ubaa8\ub378 \ucd08\ub2f9 \uc694\uccad \ucc98\ub9ac\ub7c9(RPS) \uc9c0\uc18d \ub3d9\uc811 \uac00\ub2a5 \uc218 \ud2b9\uc9d5 C <a href=\"https:\/\/wi-th.com\/pt\/ele\/capacidade-de-processamento-da-otimizacao-da-coocorrencia-especifica-da-lingua\/\" class=\"read-more-link\">[more&#8230;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[417,423],"tags":[430,431,429,428],"class_list":["post-2908","post","type-post","status-publish","format-standard","hentry","category-it","category--it","tag-430","tag-431","tag-429","tag-428"],"_links":{"self":[{"href":"https:\/\/wi-th.com\/pt\/wp-json\/wp\/v2\/posts\/2908","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wi-th.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wi-th.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wi-th.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wi-th.com\/pt\/wp-json\/wp\/v2\/comments?post=2908"}],"version-history":[{"count":0,"href":"https:\/\/wi-th.com\/pt\/wp-json\/wp\/v2\/posts\/2908\/revisions"}],"wp:attachment":[{"href":"https:\/\/wi-th.com\/pt\/wp-json\/wp\/v2\/media?parent=2908"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wi-th.com\/pt\/wp-json\/wp\/v2\/categories?post=2908"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wi-th.com\/pt\/wp-json\/wp\/v2\/tags?post=2908"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}