你所在的公司是如何实施DevOps的?

  • 1回答
  • 0浏览
  • 提问时间:2021-07-23
最佳答案 DevOps绝对不等于工具的堆砌。谈谈自己的部门。目前正在做的产品根据功能分为各种微服务,后端微服务全部由springboot框架管理。通过docker容器+K8S集群管理+Gitlab的在线CICD环境持续集成服务。当然,git服务器也使用Gitlab。先说docker对DevOps的含义,我觉得在整个DevOps工具链中,容器是最基本、最基本的工具。由于容器在Dev和Ops之间打开了一个非常大的通道,即Dev交付给运维的不再是代码,而是镜像。这是一个巨大的变化。在工作环境中,我们会有很多环境,比如alpha环境beta环境的在线环境,每个环境使用不同的配置。对Dev而言,希望代码与配置分离,代码永远只有一个,但配置可以根据环境有几个,根据不同的环境加载不同的配置。对Ops而言,希望每一个环境都是一致的,这样alpha环境表现正常的程序迁移到beta环境也应该是正常的。现在有了docker容器技术,Dev交付给Ops的不再是程序,而是一个镜像,它有我们包装的程序和各种配置。这样,对于Ops来说,alpha环境和beta环境就没有区别了。alpha环境和beta环境是两个k8s集群/namespace。当alpha环境中的镜像服务正常时,可以一键直接迁移到beta环境。CICD,快速迭代的保证。与大多数选择Jenkins不同,我们部门的CICD系统使用Gitlab-ci。这里就不说孰优孰劣了,简单说一下CICD对日常工作的意义。之前说Dev交付给Ops的不是代码,而是镜像。因此,我所负责的服务基本上分为三个环节:测试/检查、镜像包装和部署。其实这三个环节是再容器化技术普及之前最头疼的问题,让我想起一年前刚开始学Java的时候,终于写了一个JavaWeb程序,然后花了很大力气去理解如何用Tomcat发布,最后在服务器上打开tomcat服务之后才能真正使用。而CICD的意义,就在于之前我所做的以及我所不能做的事情全部自动化。测试环节一般负责的就是单元测试与静态代码检查,构建镜像环节就是直接将我们的程序以及所需要的环境直接打成镜像上传到公司的私有DockerHub中,而发布环节就是简单的通过K8S的deployment直接部署到集群中,一切全部自动化完成,完全不需要Dev和Ops在这当中有任何操心的环境。< img class="cto- img" src="https://s2.51cto.com/images/20210723/1627006836695519.jpg" title="1627006836695519.jpg" style="display:block;margin:auto;" alt="3.jpg"/>最骚的是这各个环节同样是可以手控的,比如在我的实践中alpha环境是提供给内部开发人员和产品人员随意使用、自测的环境,所以单测,打包,部署在alpha环境上市一气呵成的。而对于beta环境是交由测试人员使用的一个专门的环境,我希望beta环境是尽量的稳定的。那么我的代码更新或者合并新的功能时,我可以只执行测试和打包环节,而不执行部署环节。当beta环境也稳定时,我们希望将beta环境的服务交付给生产环境,我们之前提到过开发交付给运维的不再是代码和环境配置,而是镜像,所以我们只需要将beta环境中的镜像交付给生产环境即可。
问答分类:WEB开发

如何成为一个 DevOps?

  • 1回答
  • 0浏览
  • 提问时间:2021-07-23
最佳答案 很高兴你有兴趣成为DevOps工程师。但在真正成为DevOps工程师之前,你首先要明白,DevOps是一个很大的分类,在具体的岗位上,也可以分为三类:偏爱开发(Dev)的DevOps工程师,在构建应用中起到软件开发的作用。他们日常工作的一部分是使用连续集成/连续交付(CI/CD)、共享仓库、云和容器,但他们不一定负责建造或实施工具。他们了解基础设施,并能在成熟的环境中将自己的代码推向生产环境。偏爱运维技术(Ops)的DevOps工程师,可与系统工程师或系统管理员进行比较。他们知道软件的开发,但不把一天的重心放在构建应用上。相反,他们更有可能支持软件开发团队实现手动流程的自动化,提高人员和技术系统的效率。这可能意味着分解遗留的代码,使用不太繁琐的自动化脚本运行相同的命令,或者安装、配置或维护基础结构和工具。他们确保为任何有需要的团队安装可用的工具。它们还将通过教授团队如何使用CI/CD和其他DevOps来帮助他们。网站可靠性工程师(SRE)就像解决运维和基础设施问题的软件工程师。SRE专注于创建可扩展、高可用、可靠的软件系统。找一份DevOps的工作当然,如果你是职场新人:那么,申请聘请初级DevOps工程师的公司就有空缺机会了。不幸的是,许多公司表示希望找到更有经验的人,并建议你在获得经验后申请这个职位。这是“我们需要经验丰富的人”的典型,令人沮丧的场景,并且似乎没人愿意给你第一次机会。如果你已经工作了:首先尝试在你当前的公司寻找机会。你能通过和其他的团队一起工作来重新掌握技能吗?尝试跟随其他团队成员,寻求建议,并在不离开当前工作的情况下获得新技能。如果做不到这一点,你可能需要换另一家公司。< img class="cto- img" src="https://s2.51cto.com/images/20210723/1627006416417033.jpg" title="1627006416417033.jpg" style="display:block;margin:auto;" alt="1.jpg"/>如果你能从上面列出的一些实践、工具和技术中学习,你将能在面试时展示相关知识从而占据有利位置。关键是要诚实,不要担心失败。大多数招聘主管都明白你并不知道所有的答案;如果你能展示你一直在学习的东西,并解释你愿意学习更多,你应该有机会获得DevOps的工作。
问答分类:WEB开发

如何评价BAT三家内部使用的devops工具?

  • 1回答
  • 0浏览
  • 提问时间:2021-07-23
最佳答案 越来越多的DevOps话语权被平台厂商掌握在DevOps实践的第一阶段,通常是Jenkins、Nexus、Ansible、Shell等一系列工具的拼凑组合,使用困难,维护成本高,开发体验差。随着DevOps的成熟,一些以CORNERSTONE、AWS、Pivotal、RedHat为代表的公司分别退出了自己的DevOps产品,或者是一个完整的工具链,或者直接整合到一个PaaS平台上,甚至有些产品直接将敏捷和精益的概念整合到产品中,可以直接将一个公司的所有业务放在平台上,这也符合最近流行的数字平台战略。无论如何,这些平台厂商在销售自己的产品一边重新定义DevOps。随着平台的完善,DevOps变得越来越不重要。我一直认为最好的DevOps团队应该是润物细无声的,就是一个团队不需要提DevOps,整个团队自然可以关注业务价值的交付,可以按照高质量高效率的要求有序的去做。平台可能会帮助我们做到这一点。容器化&微服务仍然是DevOps应用和开发的主要领域。容器化和微服务自然适合小而全的功能团队,自治服务也是DevOps端到端交付团队的复合设计。近年来,随着容器化技术的发展,容器管理(Kubernetes)越来越成熟(据悉,github已经将其部分产品环境灰度发布到kubernetes上,JD.COM也将其60%的服务采用kubernetes管理)。安全成为推动DevOps全面发展的重要力量安全是DevOps永远绕不开的话题,也往往是新技术在传统行业(例如金融和电信)应用中的最大阻碍。< img class="cto- img" src="https://s2.51cto.com/images/20210723/1627006166521936.jpg" title="1627006166521936.jpg" style="display:block;margin:auto;" alt="0.jpg"/>一方面,组织结构的转型迫使企业要打破原先的部门墙,这意味着很多原先的控制流程不再适用。另一方面,由于大量的DevOps技术来源于开源社区,缺乏强大技术实力的企业在应用相关技术时不免会有所担忧。DevOps全局优化的特点与安全社区提出的“BuildSecurityIn”也特别吻合,加之越来越多安全易用的工具涌现,DevOpsSec会越来越被人们熟知。
问答分类:WEB开发

前端实习css,html要掌握到什么程度?

  • 1回答
  • 1浏览
  • 提问时间:2021-07-22
最佳答案 前端实习css,html应该掌握多少?一般来说,如果我们刚开始学习前端,html和css的学习程度可以独立写网页。如果我们熟悉,我们可以开始学习html5、css3和JavaScript。我也是软件工程专业的,叫你弟弟。多做一些总结,看看自己在这个阶段掌握了多少技术,多写笔记,这样印象会更深刻。现在招聘实习没有标准。有的没有基础,有的对技术要求更高。反正到时候你会找更多的实习面试,机会也会更多。先不用在意实习的程度,学习的时候可以把目标定位为就业的程度。如果你想找实习,除了掌握红宝书的内容,你还需要了解一些ES规范(ES6、ES7、ES8等。,ES9和ES10可以用手写Promise。另外还建议你尽快学习js框架(Vue或React,Vue入门简单,但是个人推荐React,Angular暂时不考虑),最好再自己写一些demo,实现一些复杂的结构(比如树状菜单等),让面试官有什么可以问的。< img class="cto- img" src="https://s2.51cto.com/images/20210722/1626933190120738.jpg" title="1626933190120738.jpg" style="display:block;margin:auto;" alt="4.jpg"/>然后是刷基本的算法题(大数相加等);框架类需要了解vue或react基础知识:例如vue的双向绑定原理、reactdiff或fiber原理(大厂会问)等,具体可以刷刷面经。另外你还需要学一些浏览器和网络基础:跨域、持久化缓存等;HTTP状态码304是什么意思,301、302的区别;HTTP缓存类型等;TCP三次握手、四次挥手;TLS是做什么的,握手过程;除了上面这些,web安全也要了解:xss、csrf、***f。
问答分类:WEB开发

为什么 Web 前端开发不抛弃 HTML 和 CSS?

  • 1回答
  • 2浏览
  • 提问时间:2021-07-22
最佳答案 首先要确定,即使抛开游戏,一般的Web应用或者网站,用JavaScript开发也是可行的。例如ExtJS,EnyowebOS等。但主流Web开发很少采用全JS方案。原因如下:1。注意不能运行JS的用户代理。用户使用不支持JS的浏览器(如旧手机浏览器)或禁用脚本。当然,你可以选择忽略这一小部分用户,尤其是现在大部分网站和应用都是这样选择的,但至少要基本尊重坚持考虑没有JS的开发者。另外,比如MobileTranscoder或者某些手机浏览器的极速模式就是基于服务器端对网页的解析和重组,是否能够支持JS非常令人窒息。SEOfriendly是更重要的因素。如果是全JS生成的网页,搜索引擎无法索引内容。这对许多网站来说是至关重要的。请注意,有人提到screenreader。但是绝大多数的读屏软件都是基于DOM,所以所有的DOM都是由JS生成的,没有问题。但前提是JS生成的DOM符合accessibility的要求。注意HTML/CSS本身的优点。诚然,JS本身可以通过精心设计的框架和库来实现所有HTML/CSS模型的优势,如分离。但不确定因素很多:1)有足够好的框架和库吗?要考虑是否能满足你的业务需求,还可能要考虑性能、可扩展性、之前提到的accessibility、学习曲线、工具链,乃至此框架和库的长久的生存(有人维护,修bug、加新功能比如对HTML5新API的支持之类的)。关键是,理论上说JavaScript具有更高的弹性,但是更大的自由度未必能得到更好的2)框架和库给出的抽象模型和HTML/CSS模型的阻抗是否匹配?假如该框架或库本质上仍然使用HTML/CSS模型,只是改变了语法(比如从markup改为json),那么其提供的好处在哪里?仅仅是语法统一?< img class="cto- img" src="https://s2.51cto.com/images/20210722/1626932664987504.jpg" title="1626932664987504.jpg" style="display:block;margin:auto;" alt="4.jpg"/>如果该框架或库有自己独立的抽象层,比如widget/component等,那么它是建筑在HTML/CSS之上的额外抽象层(即最终映射到HTML/CSS),还是仅仅以HTML/CSS为纯粹实现工具?对于前者,实际上最终会回归HTML/CSS模型。而后者,可以参考的经验教训就是http://ASP.NETWebForm和JSF。
问答分类:WEB开发

HTML CSS JS很低级吗?

  • 1回答
  • 1浏览
  • 提问时间:2021-07-22
最佳答案 说实话,学习这三件事似乎并不难。如果基础好,学习成本20~40小时就可以像样做一个小项目。html是一种标记类型的语言,只有几个标签,好像一个div可以完成一切。css层叠样式表,这个东西也不难,好像学会了宽高,居中,颜色,定位,浮动就足够码页轻松了。js,也就是那套东西,dom,bom加上所有数据类型的操作学习一下就够了。但你让他真正写一个项目试试,看看他认为低级的东西存在一起他能不能用懂。说实话,前端行业看起来很简单。真正入行后,你会发现前端技术栈很多,需要学习的东西也很多。先不说nodejs那套,就简单的前端来说,性能优化要学,你写的项目怎么说进了两秒俱乐部才算合格。vue,react全家桶要学,这个东西用起来你不仔细读两三遍文档就会用,我肯定不信。学习前端和后端的交互,否则无法发送请求。你不会理解http协议,也不会使用xhr、jsonp、axios、jquery和fetch。就算会用,也要学promise。eventloop要理解,这个东西都不懂,javascript异步肯定用不顺手,代码页面必然漏洞百出。项目构建工具,就一键启动那种你也得弄两个吧,gulp,webpack也得简单学一学,还有ES6,ES7语言新特性不能不知道吧。还有等等等等等...< img class="cto- img" src="https://s2.51cto.com/images/20210722/1626932546373169.jpg" title="1626932546373169.jpg" style="display:block;margin:auto;" alt="3.jpg"/>一个优秀的程序员肯定不是啃着自己会的东西去炫耀,而是看一看自己不会的东西是什么继续学,想要当一个合格的程序员那原则就是只要学不死就往死里学,学了几年之后不说一览众山小,但是至少你也算是超过同样的程序员太多了。
问答分类:WEB开发

前端只会html,css,会不会找不到实习?

  • 1回答
  • 1浏览
  • 提问时间:2021-07-22
最佳答案 我找实习的时候,只会html,javascript,css,库里会有jquery,连ajax都没接触过。刚找工作时连连碰壁,因为大公司嫌我基础差,学历也不好,小公司觉得我没有即战力(不会vue和react),做不了工作,那时我已经心灰意冷了。最终全凭运气进入杭州滨江硬件大厂,真是全凭运气!!由于前几天刚好恶补了css知识,我记得面试官问我如何提高性能,我说一个可以通过will-change欺骗浏览器调度GPU来提高渲染性能,估计赢得了面试官的好感,后面的算法题和网络题都答得不好,但最后还是给了!后面我也找当时的面试官问为啥会选了我,他说我看起来比较憨厚,而且技术视野不错(其实都是临时瞎编的,根本不逛技术论坛)。。。现在已经是三年经验的老鸟了,见到过不少的应届生、实习生,感觉他们的实力都几倍于我当时的水平,现在内卷挺严重的。。。< img class="cto- img" src="https://s2.51cto.com/images/20210722/1626932413845377.jpg" title="1626932413845377.jpg" style="display:block;margin:auto;" alt="2.jpg"/>建议:打好javascript的基础(非常重要,可以多刷题),起码让面试官觉得有培养价值,另一个就是vue、react的框架得会一个,让面试官觉得你招进来能够干活!大厂还会关注课本知识和算法最后祝愿题主可以顺利入行!
问答分类:WEB开发

现在还有多少人手写css?

  • 1回答
  • 1浏览
  • 提问时间:2021-07-22
最佳答案 大家应该注意到,最近行业非常缺乏前端开发人员,前端开发人员培训机构如雨后春笋般涌现。拨开眼前的面纱,定睛一看,就会发现,缺的其实不是前端,而是优秀的,有资质的,有深度的前端开发人员。通过接触一些前端同行,一些人力资源,收到很多简历,我发现目前的情况是这样的:业内有大量的儿童自称前端开发人员,但只能根据设计稿写出页面水平。换句话说,会HTML和CSS,还有一点JavaScript。环顾四周,这种程度的人太多了,完全没有技术优势。尽管这些也是前端开发人员,但公司要抢的前端开发人员并非这样。为何如此?因为CSS这门语言入门实在是太简单了,比如说我夫人,完全不懂代码,我手把手教她1个星期,写出一个长得像某某网首页的页面绝对是没问题的,因为CSS常用属性就那么多,且鲜有逻辑,无须算法,熟记各个属性值对应的特性就能上手了。< img class="cto- img" src="https://s2.51cto.com/images/20210722/1626932323623364.jpg" title="1626932323623364.jpg" style="display:block;margin:auto;" alt="1.jpg"/>所以,很多没有编程基础的人,就通过HTML和CSS进入了这个圈子。但当他们发现自己可以很愉快地实现页面的时候,就会觉得CSS也就这样,导致困于庐山,止步不前,就算日后听到或见到“CSS深入很难”的言论并打算着手精进,也不知道接下来该怎么走、如何突破现有的瓶颈,于是就产生了迷茫。
问答分类:WEB开发

CSS 为什么难学?该怎么学?

  • 1回答
  • 1浏览
  • 提问时间:2021-07-22
最佳答案 之所以觉得CSS难学,是因为他不是编程语言~所以CSS要求的思维方式和能力和编程完全不一样。不是说你之前写代码的能力很强,CSS应该学的很好。许多人会骑自行车,但不能骑三轮车。那么,学习编程需要什么能力,和CSS有什么对比呢?第一,基本语法和数据类型。html标签和属性应该ml标签和属性。这个差别很大,我写CSS的时候很疯狂。基本语法好说,无非是赋值循环判断函数类等,数据类型也不过是数值字符串数组等等。无论JAVA、Python、Erlang(这是我理解的最头疼的),go、c都没有什么本质的区别。事实上,他们要你花太多心思去背。比如赋值涉及到变量和常量。对我来说,变量和常量看似一个概念,其实都源于一个问题,就是如何表示数据,不同数据有哪些应用场景,我是如何划分这些应用场景的。而且控制语句来源于流程图,顺序选择循环,一个函数中的代码,本质上就是这三种,尤其是去除万恶的goto语句后。当然,递归另算。数据类型也很好理解,整形浮点这些东西在学会计算机组成原理和数据结构之后,都对理解概念有帮助,更重要的是,这些数据类型都有出处和依据,而且量不太多。< img class="cto- img" src="https://s2.51cto.com/images/20210722/1626932171658718.jpg" title="1626932171658718.jpg" style="display:block;margin:auto;" alt="9.jpg"/>所以他们都是可以用一理通而百理融的方式描述出来。融汇贯通的一种含义,就是把复杂的变化归结于一些简单的推论,由繁化简,弄懂最核心的基本概念和变化规则,再反过来衍生各种变化。太极生两仪,两仪生四象,四象生八卦这些。所以简单来说,不需要记忆太多,只需要弄懂一些道理和规则,其他的都是可以整理,归纳,推论的,一些推论链条也可以直接形成快捷的复用模式,从而构建更复杂的知识体系。
问答分类:WEB开发

为什么 CSS 这么难学?

  • 1回答
  • 2浏览
  • 提问时间:2021-07-22
最佳答案 CSS并不比其他编程语言更难,说这话可能是因为它没有接触到真正困难的地方。因为大多数程序员做最基本最简单的工作。编程有两种不同的工作:一种是机械的,把清晰的行为逻辑翻译成代码;另一种是创造性的,给你的信息是不足的。你需要发挥创造力,弥补不足,完成整个项目。它可以包含许多不同难度的内容。创造性的工作天生难。很多程序员最多只接触过1到2,甚至很多只翻译业务逻辑。自然,他们认为编程相对简单,因为水平不够,复杂的工作让别人为自己做。即使是很多所谓的架构师、产品经理,他们做3、4做什么,你心里恐怕也有数。谈谈CSS。如果你写CSS时得到的信息和写业务逻辑一样清晰,比如整个页面有三个框架,采用浮动布局,左右固定200px,最小高度为100vh,内容为中间框的子节点,padding为10px...那么你也会觉得写CSS很容易,就是翻译一下。问题在于写CSS的时候给的并不是这种清晰的描述,而是只有整个东西长什么样,至于具体每个元素如何排布、使用怎样的布局方式、如何设计选择器,都是需要自己精心设计的,自然就显得难了。为什么整个东西长什么样不能直接翻译成CSS呢?< img class="cto- img" src="https://s2.51cto.com/images/20210722/1626932052849754.jpg" title="1626932052849754.jpg" style="display:block;margin:auto;" alt="8.jpg"/>很多人以为CSS是给DOM元素设置属性(attribute),其实CSS规定的并不是属性,而是行为(behavior),DOM里的每个元素都可以看成是一个独立的物体,按照CSS规定的方式运动,最后稳定下来的结果就是最终布局的结果。所以高票答案说CSS不正交,它当然不是正交的,因为它的设计就是要求协变,要求在其他元素做出调整的时候,即便本元素的样式没有发生任何变化,也可以跟着调整位置和大小,以适应新的内容,维持设计风格。
问答分类:WEB开发