分类 工具 下的文章

7大迹象,表明你的DevOps 做对了!

据预测,未来 10 年中,企业或组织的数字化转型会达到高峰,将比过去几十年的总和还要多。而这一进程,开发工程师必须找到更加有效的开发方式,才能实现。

在这一层面来说,DevOps 是数字业务转型计划的核心。目前,企业越来越重视DevOps,并开始向这种开发方式转型。但是,如此多声称专注于 DevOps 的企业或组织,真的都做对了吗?

在大多数的 DevOps 实践中,仅仅涉及到了特定工具的使用,企业非常松散地遵循着某些 DevOps 原则。然而,要想真正成为一个以 DevOps 为中心的组织,这些远远不够。参照以下 7 点,或许能够帮助你及时纠偏:

一、部署是完全自动化的

每一个项目工程通常都包含了很多的代码文件、配置文件、第三方文件、图片、样式文件等不同部分,要想将这些部分有效组装、最终形成最后的应用结果,往往需要借助构建工具或策略。

构建过程如果仅仅依赖人工,就会十分繁琐。于是,自动化构建、自动化发布、自动化部署的想法和探索就浮现了。自动化的出现,将大大提升工作效率。

在 DevOps 实践中,是需要从头到尾完全自动化部署的。自动部署的意义不仅仅在于节省时间,更多是避免问题的出现,手动部署更常出现因为人为错误引起的问题,而自动部署可以在问题出现时迅速恢复到以前的版本。

二、有频繁且快速的发布周期

天下武功唯快不破。想要获得更强大的竞争力,只有不断部署和快速修复。DevOps 中一个核心功能就是 CI/CD(持续集成/持续交付),寻找更有效的自动化和部署更新迭代的方法,让开发人员提高生产效率、并快速地发布到生产环境中。

CI/CD 通过在构建、测试和部署应用程序时强制自动化完成。这种 DevOps 方法的精髓在于:

1)通过频繁的代码库提交、自动化构建等来提高生产力;2)通过集成自动化测试以及开发期间的测试,增加在开发早期发现错误的机会;3)得益于频繁的测试和自动化部署系统,可以更快地发布版本。

三、注重可观察性

国外的一份报告显示,可观察性正在成为 DevOps 实践中绝对不能缺少的一环。在跨越多个流程的数字业务转型中,可观察性有非常重要的意义。

New Relic 对 1300 名 IT 领导者、软件工程师和开发人员进行的一项全球调查发现,90% 的受访者认为可观察性对业务至关重要。只有更多地基于事实而非直觉,才能作出明智的决策,越来越多的团队开始从整个企业应用程序环境中收集数据,来提高整个开发过程的可观察性,可观察性也在生产前和生产后的环境中扮演越来越重要的角色。

四、有持续的反馈循环

请输入图片描述

初期,DevOpsDays 活动的发起人和 DevOps 这个词的创始人 Patrick Debois 发现,有关 DevOps 的话题相互交织在一起形成了四个不同的反馈环,如上图所示。

其中,蓝色气泡代表技术,黄色气泡代表过程管理。一起形成了 4 个循环。开发-测试反馈环(黑色箭头反馈环);开发-运维反馈环(绿色箭头反馈环);业务-运维反馈环(红色箭头反馈环);业务-用户反馈环(紫色箭头反馈环)。

在现在的 DevOps 理念中,出现错误并不可怕,可怕的是没有一个持续的反馈循环系统来检测何时何地出现问题。反馈循环需要在发生错误时快速通知,从而使问题得到更快地解决。

很多时候,我们遇到问题仅仅是简单地解决了它,并没有花时间分析问题发生的原因以及如何防止问题再次出现。这样的循环是不完整的。从某种程度上,如果你设置了一个系统来识别问题、修复问题和改进问题,还需要认真分析,才意味着你在正确地实践 DevOps。

具体来说,一个监控系统需要观察并记录系统状态变化和数据的流程:1)状态的变化:可以通过状态的直接度量或者更新日志来表示;2)数据:可以通过记录内部组件和外部系统之间的请求和响应来记录。

五、开发和运营团队一起工作

Dev(开发) 和 Ops(运维) 的矛盾主要是面向适应性的敏捷软件交付和面向经验性的传统运维之间的矛盾。这个矛盾最先由 John Allspaw 和 Paul Hammond 在“10+ Deploys Per Day: Dev and Ops Cooperation at Flickr”提出,并以“Cooperation”作为整个演讲的核心,讲述了他们解决这个矛盾的实践经验。

在一个组织中,如果相关利益者的利益不一致,在既定流程的进行中一定会碰到诸多阻力。而在这一点上,首先做的就是把 Dev 和 Ops 的利益一致化,从而减少 Ops 对软件交付的阻力。

在传统观念中,开发的工作是增添新的功能,而运维的工作则是保证站点的稳定和高性能。 而在 DevOps 的观念中,Ops 的工作目标应该是激活业务(enable the business ),与 Dev 是一致的。

至此,DevOps 众所周知的主要好处就是打破开发和运营之间的孤岛。在维基百科上,DevOps 的解释也着重于一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。因此,开发、测试和 IT 运维团队之间的沟通对于 DevOps 的成功至关重要。

六、目标明确

虽然不同团队之间的沟通至关重要,但明确定义每个人都在努力实现的目标同样重要。归根结底,所有团队都有同一个目标:让组织更有效率。

但是,他们为实现这一目标而遵循的个人实践可能会有所不同。团队成员应了解实现目标所需满足的精确要求,而不是做出假设或任其发展。

七、使用正确的工具和平台

DevOps 不仅仅是一种文化转变——它需要强大的工具才能实现。在实践过程中,如果你发现往往需要花费大量时间来解决出现的问题,那么很可能是因为你没有选择正确的 DevOps 工具。

幸运的是,目前的市场上有大量且广泛的 DevOps 工具可以选择,以适应当前现有的所有的数字化基础设施。尽管工具是 DevOps 的重要组成部分,但是要记住,真正使改变发生的是实践。

请输入图片描述

在众多 DevOps 工具中,近两年来被业内广泛关注的飞算SoFlu因其对软件开发流程的变革而被大量企业应用于DevOps落地,飞算SoFlu是一款管理加开发工具,通过可视化编程的方式满足开发需求。使用平台的一个ID相当于一个10人科技团队,从而使用户有更多精力可以更多关注自身业务。飞算SoFlu中包含的三大核心技术,全都是 DevOps 实践中所要关注的重点:

1)可视化开发

改变传统开发方法,业务逻辑可视化展示,降低开发门槛,无需编写代码,在设计业务逻辑时就形成微服务应用。

2)平台组件

可视化平台组件是一类通用的技术功能模块,平台支持循环条件判断,函数调用,通过拖拽方式以及参数配置实现等同于编写复杂代码的业务逻辑,有别于通过组件排列组合。

3)管理方式

主要通过管理平台来管理需求、研发、测试、部署、上线、运维等整个软件生命周期,经验沉淀、知识积累,将管理制度真正的落地。

截至目前,飞算SoFlu已为包括医疗、金融、制造、零售等在内的八大行业的上百家机构提供了技术服务,助力其落地DevOps,提升研发效率。

一个典型的案例是,飞算SoFlu在某大型国有银行的应用。该银行原本需要3天才能开发完成的接口,使用飞算SoFlu,仅用了5个小时。其IT负责人表示,使用飞算SoFlu后,银行软件中心的整体研发效率获得了大幅提升。

飞算SoFlu的DevOps功能正是在不断的实践中完善升级,从实际业务出发,真正让企业实现降本增效。

利用Git+ 宝塔WebHook 实现git更新远程同步到Linux服务器中的多个目录

希望本地项目push到Git平台(Coding、码云、GitHub)上后,自动pull到Linux服务器,实现本地与服务器上的多个目录的数据同步更新。

环境:(Coding 开放平台+Linux宝塔+Git,当然其他git平台同样适用,只要Git的平台支持WebHook 即可。
需求:本地项目同步到Git平台,服务器自动同步Git平台上的数据。
目的:希望本地项目push到Git平台(Coding、码云、GitHub)上后,自动pull到Linux服务器,实现本地与服务器的数据同步更新。

项目目录1: /www/wwwroot/mla.xin (mla.xin变量,自定义)
项目目录2: /www/wwwroot/mla.xin2 (mla.xin2变量,自定义) ...

可以有更多的目录

步骤一:

宝塔自带 git(没有的话可以自行安装),生成公钥后添加公钥到Coding (可以通过ssh 拉取coding上的代码)

ssh-keygen -t rsa

一路回车即可,公钥的位置/root/.ssh/id_rsa.pub,将里面的公钥复制粘贴到 Coding (个人设置-SSH公钥)

步骤二:

宝塔面板安装宝塔插件-宝塔WebHook,设置,添加钩子脚本

#!/bin/bash
echo ""
echo "Start..."
#gitPULL 函数
function gitdis()
{
    starttime=$(date +%Y-%m-%d\ %H:%M:%S)
    echo $starttime
    echo "########## Web站点路径:$1 开始复制"
    #判断项目路径是否存在
    if [ -d "$1" ]; then
            cd $1
            #判断是否存在git目录
            if [ ! -d ".git" ]; then
                    echo "在该目录下克隆 git"
                    git clone $gitHttp gittemp
                    mv gittemp/.git .
    rm -rf gittemp
            fi
            #拉取最新的项目文件
            git pull
            #设置目录权限
            echo "End"
    else
            echo "该项目路径不存在"
            echo "End"
    fi

    echo "Web站点路径:$1 拉取成功"
}
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then
          echo "param参数错误"
          echo "End"
          exit
fi
#git 网址
gitHttp="https://git.dev.tencent.com/yundun/tmla.git"
#git项目路径
gitdis "/www/wwwroot/mla.xin"
gitdis "/www/wwwroot/mla.xin2"

exit

其中git网址在Git平台那可以查询到,之后生成webhook URL(http://面板/hook?access_key=秘钥&param=mla.xin),将网址粘贴到Git平台上新建WebHook中的URL里。

备注:可同时推送多个服务器,已方便使用负载均衡。

利用Git+ 宝塔WebHook 实现git更新远程同步到Linux服务器

希望本地项目push到Git平台(Coding、码云、GitHub)上后,自动pull到Linux服务器,实现本地与服务器的数据同步更新。

环境:(Coding 开放平台+Linux宝塔+Git,当然其他git平台同样适用,只要Git的平台支持WebHook 即可。
需求:本地项目同步到Git平台,服务器自动同步Git平台上的数据。
目的:希望本地项目push到Git平台(Coding、码云、GitHub)上后,自动pull到Linux服务器,实现本地与服务器的数据同步更新。

项目目录: /www/wwwroot/mla.xin (mla.xin变量,自定义)
远程Git版本库: Coding 腾讯云开放平台

步骤一:

宝塔自带 git(没有的话可以自行安装),生成公钥后添加公钥到Coding

ssh-keygen -t rsa

一路回车即可,公钥的位置/root/.ssh/id_rsa.pub,将里面的公钥复制粘贴到 Coding (个人设置-SSH公钥)

1.png

步骤二:

宝塔面板安装宝塔插件-宝塔WebHook,设置,添加钩子脚本

2.png

#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' " %Y-%m-%d %H:%M:%S"
echo "Start"
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then
          echo "param参数错误"
          echo "End"
          exit
fi
#git项目路径
gitPath="/www/wwwroot/mla.xin"
#git 网址
gitHttp="https://git.dev.tencent.com/yundun/swt.git"

echo "Web站点路径:$gitPath"

#判断项目路径是否存在
if [ -d "$gitPath" ]; then
        cd $gitPath
        #判断是否存在git目录
        if [ ! -d ".git" ]; then
                echo "在该目录下克隆 git"
                git clone $gitHttp gittemp
                mv gittemp/.git .
rm -rf gittemp
        fi
        #拉取最新的项目文件
        git pull
        #设置目录权限
        echo "End"
        exit
else
        echo "该项目路径不存在"
        echo "End"
        exit
fi

其中git网址在Git平台那可以查询到,之后生成webhook URL(http://面板/hook?access_key=秘钥&param=mla.xin),将网址粘贴到Git平台上新建WebHook中的URL里。

我成功开发了一个 SaaS 项目,技术栈是这样的

作为一名忠于内心的工程师,每当我看到一家公司发布有关它们技术栈的文章时,我都会泡一杯咖啡,坐下来耐心阅读,看看有没有新的发现。了解其他公司业务背后隐藏的一些技术十分有趣。就像娱乐八卦一样,只不过这是技术层面的探索。

几个月前,我开始开发另一个 SaaS,该项目经历无数次迭代。幸运的是,尽管项目仍处于早期阶段,但是很多网站已经对其进行了集成。

作为一个自负盈亏的独立创业者,我相信正是由于专注于自动化,才让我能为来自 80 多个国家和地区的客户提供可靠服务,并且每周持续提供新功能。当我想要了解服务的运行情况或者其他方面的信息时,我会尝试利用我熟悉的工具。当然,我也明白,在一些特殊情况下这些工具并不会帮到我。

现在,我简要地介绍下平时使用的一些工具。

非常重要的一点是,虽然工具列表看起来很长,并且有一些是非常规且不常用的选项,但实际上我在基础架构上花费的时间很少,如果有的话,每个月平均下来也就是几个小时。还有一点就是个人推荐就像是开处方一样,我认为对我非常有用的一些工具,可能并不适合你。一定要考虑自己的实际情况,并利用好当下你熟悉的工具。

编程语言

多年来,我学习和使用过好几种编程语言,但是对于独立项目,我特别挑选出两种编程语言。这两种编程语言可以在生产力以及可靠性上取得很好的平衡。

Python:很多项目的后端代码都是用 Python 实现的。它可以让我能够以较快的速度发布新功能。另外,我使用 mypy 用于类型提示,这方便我进行代码管理。

Typescript:我以前会有意地避开前端开发的工作。直到大约 4 年前,我发现并开始使用 Typescript。它让我感觉写前端的工作体验更好了,现在我使用它并结合 React 框架一起构建我的项目。

框架

理论上,我会在这里介绍很多这方面的内容,但是相关论坛上有不少介绍,我也是站在巨人的肩膀上学到很多知识。因此我只想介绍几个非常不错的框架:

Django:该框架简直就是独立开发者的宝库。你在该行业中工作的时间越长,你越能体会到避免重复造轮子带来的幸福感。这一框架可以让你走的更远,因为它的功能实在是太全面了,应用场景也很广泛。推荐阅读Instagram如何优化Python提高服务性能、Sentry项目、10大Django构建的网站了解一下 Django 的使用场景。对我来说,该框架不管在性能还是功能方面都能满足我的需求。

React:数据展示相关的 Web 应用是使用 React + Webpack 构建的。在长时间使用 Angular 后,我最终切换到 React,因为它是支持可插拔的视图层,不会对其他功能造成影响。我使用性能表现不错的django-react-templatetags将 React 组件嵌入到我的 Django 模板中。

NextJS:我使用它进行页面、文档等的加载。它让我能重用各种 React 组件,并且可以提高静态页面的性能以及 SEO 优势。

Celery:我使用该框架用于后台/定时任务的管理。该框架的学习成本较高,但是一旦你了解了它的工作原理,并应用到项目中后,你就能体会到该框架的稳定性和可靠性了。

Bootstrap 4:我基于 Bootstrap 构建前端应用。它节省了我很多时间,并且文档资料详细丰富。这就是我选择使用它的原因。

数据库

我最初将所有数据都存储在 SQLite 数据库中,对数据进行备份意味着要将副本数据复制到 S3 之类的对象存储中。之前对于测试过的一些小型站点来说,没有什么问题。但是,随着项目的功能及页面越来越多,我需要更多专门的数据库来支持这些功能:

Clickhouse:我相信 Clickhouse 是为数不多的随着时间的推移而经久不衰的技术之一。说实话,这是一款十分给力的数据库,它能够实现原先在低配置硬件上几乎无法实现的功能。

PostgreSQL:我必用的关系数据库。默认配置合理,经历了充分的市场检验并且与 Django 深度集成。在 Panelbear 中,PostgreSQL 主要用于与分析无关的应用数据存储;对于分析用的数据,我使用 Django 实现了一个简单的接口从 Clickhouse 查询数据。

Redis:我在很多场景中使用了 Redis,比如缓存、速度限制、任务队列以及作为有生命周期的键值存储。Redis 功能强大且性能稳定,社区文档也十分丰富。

部署工具

与这篇文章描述的一样,我不会将我的基础设施视为宝贝一样对待。服务器和集群本来就是一个工具而已。所以如果某一台服务器出现问题,用另外一台正常的服务器替换一下就好了。这意味着所有的操作在 git 仓库中被描述为代码逻辑,并且我不会通过 SSH 登陆服务器进行一些操作。你可以将这个描述视为一个模板,可以通过一个命令将整个基础架构克隆到任何的 AWS 服务中。

这在灾难恢复时也会对我有所帮助。我只需要运行一些命令,几分钟后,我的应用服务就可以重建并能正常运行了。当我将应用从 DigitalOcean 迁移到 Linode,以及最近往 AWS 迁移时非常有用。所有的操作都通过代码描述和执行。因此,即使在几年后,我也很容易的跟踪项目的相关部署和运行情况。现在所有的公司都拥有 AWS IAM 策略或者 VPC 子网,这些都是通过一些 UI 界面点击操作完成的,现在所有人都离不开这一功能,因为确实给用户带来了很多便利。

Terraform:我使用 Terraform 来管理大部分云基础架构。在我的 Terraform 清单中声明了诸如 EKS 集群、S3 存储、角色和 RDS 实例之类的一些配置。这些数据会同步到另外的加密 S3 存储,以避免我开发用的笔记本电脑发生故障而无力回天。

Docker:我会将所有服务构建为 Docker 映像。甚至有状态的组件(比如 Clickhouse 或 Redis)也作为 Docker 容器打包并运行在我的集群中。这也让我的应用服务可移植性非常高,因为我可以在能够运行 Docker 的任何地方运行它。

Kubernetes:它极大地解放了我繁琐的工作。我并不是盲目地向所有人进行推荐,因为在工作的这些年里,我使用它解决了好几次大型的生产故障。为公司及时解决生产问题,让我感觉十分自豪。我还用它进行容器化应用的管理,这也帮我减轻了工作负担。

GitHub Actions:过去,我常常使用的是CircleCI(这个用起来也不错),但是对于这个项目,我更喜欢使用 GitHub Actions,因为它删除了需要访问代码库以及部署密码的一个不必要的服务。但是,CircleCI 同样具有很多不错的功能,我仍然向大家推荐它。

基础设施服务

我从最开始使用月费 5 美元的 DigitalOcean 单实例服务器开始,逐步转向使用 Kubernetes 来管理服务,因为我正在彻底改变 Kubernetes 提供的一些开箱即用的功能(比如:服务发现、TLS 认证、负载均衡、日志滚动管理、滚动发布、容量管理等)。

但是,即使在较大的服务器实例上,使用 Kubernetes 管理的 DigitalOcean 也同样存在可靠性问题。集群 API 服务经常会随机地停止工作并且无法恢复,这会破坏包括负载均衡在内的许多集群服务,也就意味着服务停机无法对外提供正常服务。每当发生这种情况时,我会重新创建一个新的集群,尽管使用 Terraform 可以很轻松的实现,但是这并不会增加大家对其托管服务可靠性的信心。我怀疑是他们的资源不是特别充足导致的,考虑到他们的服务收费较低,因此这是可以理解的。

不幸的是,几周后,我就无法解决上面提到的问题了。这就是为什么我决定迁移到Linode的原因,在接下来的一个半月的时间里,系统再也没有出现过任何问题。

但是,AWS 向我抛来了更加诱人的优惠,所以我最近又做了一次迁移。AWS 还支持使用托管服务比如 RDS 来减轻 PostgreSQL 的压力,这对我来讲是个很大的优势。我的迁移工作没有那么复杂,因为我的所有基础架构都是通过 Terraform 和 Kubernetes 配置清单进行描述的。系统迁移可能会花费或长或短的时间,所以一定要有耐心。这一方面的话题可以在其他文章中找到。

AWS:提供可预测服务以及大量的托管服务。我主要在全职工作的时候使用过它,所以我没有花费很多时间来处理问题。我使用过的 AWS 服务主要有 EKS、ELB、S3、RDS、IAM 以及专用 VPC,未来我可能会使用 Cloudfront 和 Kinesis 服务。

Cloudflare:我主要将其用于 DDoS 保护、DNS 服务以及负载各种静态资源的边缘缓存(目前减少了 AWS 的 80%网络出口带宽费用——它们的带宽定价是在是太贵了!)。

Let’s Encrypt:免费的 SSL 证书授权服务。我在 Kubernetes 集群中使用了 cert-manager,它根据我的入口规则自动颁发和更新证书。

Namecheap:我常常使用的域名注册服务商。它允许 MFA 登录,这是一个十分重要的安全功能。与其他域名服务商不同,它们不会每隔几年就会突然增加域名的高昂续费费用,十分的良心。

Kubernetes 组件
以下组件可以自动完成大部分开发运维工作。我也使用其他的一些组件,但是我最想推荐给大家的是下面几个:

ingress-nginx:一个性能稳定的使用 NGINX 作为反向代理和负载均衡的网络入口控制器,控制入口流量到集群节点的网络流量负载均衡。

cert-manager:该组件可以按照入口规则中的定义自动颁发和更新 TLS 证书。

external-dns:借助 DNS 服务(例如 Cloudflare)同步公开 Kubernetes 服务和网络入口。

prometheus-operator:可以自动监控大部分的服务,并可以通过 Grafana 对数据进行展示。

flux:可以实现在 Kubernetes 中进行连续交付。当我要发布新的 Docker 映像时,可以通过拉取镜像进行部署。

命令行工具

我使用的命令行工具有很多,但经常使用且值得推荐的就下面这几个:

kubectl:与 Kubernetes 集群进行交互的工具,可以对日志、pod 和服务进行监控,并且可以 SSH 登陆到运行中的容器。

stern:Kubernetes 的 pod 日志查看工具,方便易用。

htop:交互式系统进程查看工具,真的比系统自带的 top 工具好用。

cURL:网络请求工具,可以对请求头进行检查。

HTTPie:与 cURL 工具类似,但是对于 JSON API 而言更简单易用。

hey:网络负载测试工具,可以提供详细的延迟分布报告。

监控工具

Prometheus:可以高效地存储时间序列数据并进行监控。可以追踪所有群集和应用程序的性能指标。比使用 Cloudwatch 进行应用程序监控要便宜得多。

Grafana:可以对 Prometheus 监控数据进行展示。所有的展示数据以 JSON 文件进行描述,并在 git 仓库中进行版本控制。

Sentry:对应用程序异常情况进行监控。该工具在发现带有其他元数据的未处理错误时进行告警通知。

Loki:受 Prometheus 启发而发展出来的一款日志聚合系统。它附带了 prometheus-operator 功能,可以帮助我在整个群集中对海量日志进行搜索。

邮件工具

Fastmail:我优先选用的商务电子邮箱,功能齐全且稳定性高。

Postmark:我主要将其用于交易电子邮件(电子邮件验证、每周报告、登录安全警报、密码重置等)的收发。他们的电子邮件传输速度非常快,邮件移动应用程序在业界也是一流的。

开发工具

GitHub:源代码托管及版本控制工具。

PyCharm:可能是 Python 最好的 IDE 工具。使用它可以轻松地重构和导航整个项目代码,而不仅仅是单个代码文件。 即使使用大型动态代码库,该工具的使用表现也很好。

VS Code:非常适合 Typescript / React 编程,并且可以用作通用代码编辑器。

Poetry:Python 打包及有锁文件的依赖管理工具。

Yarn:具有本地缓存的快速 JS 依赖项管理工具。

Invoked:我使用它将所有代码库任务包装在可调用的命令中。例如,使用inv build可以准备静态资源,打包前端/后端环境依赖,并生成 docker 映像。这样,就可以在本地执行与 CI 运行的相同的命令。

其他工具

Panelbear:当然,除了 Panelbear,还有什么能比 Panelbear 更好的工具来跟踪 Panelbear 的网站分析呢?内部测试是有很大收益的,因为我就是我自己的客户。

Healthchecks.io:当计划作业未能正常运行时,就会通过电子邮件或者 whatsapp 通知到我。它也是基于 SaaS 的辅助程序,这个工具我使用了好几年了,非常高兴可以推荐给大家。

Trello:我使用它来记录和跟踪一些问题、需求及想法等等。

Figma:用于为目标页面快速制作模型、横幅和插图,它取代了Sketch作为我的入门工具。

原文链接

https://panelbear.com/blog/tech-stack/

程序员经常使用的网站

程序员的工作和日常生活非常的枯燥,这里给大家推荐一些程序员经常使用的网站,也是我经常上的一些网站,我将会从多个角度、多个层面分别为你整理归纳这些网站和论坛

项目类

项目是一个面试官非常看重的点,也是拓展视野、挖掘轮子一个的地方,下面就为你推荐几个程序员都应该 mark 的项目类网站

  1. Github 代码托管 https://github.com

作为开源代码库以及版本控制系统,Github 拥有140多万开发者用户。随着越来越多的应用程序转移到了云上,Github 已经成为了管理软件开发以及发现已有代码的首选方法。代码托管必备。

Github 也有非常多好的项目可以推荐,比如我自己的 github (逃了)

https://github.com/crisxuan/bestJavaer

还有其他非常多优秀的 Github ,比如 CS-notes、JavaGuide、mall 商城项目

  1. 码云代码托管平台 Gitee | Software Development and Collaboration Platform

码云托管平台是中国的,之所以国内自己开发了一个码云平台,是因为 github 涉及到 fq,你懂的,而且码云是开源中国的托管平台,会定期评选一些优秀的项目,你不可错过!

  1. Gitlab https://about.gitlab.com/

对于有些人,提到GitHub就会自然的想到Gitlab,Gitlab支持无限的公有项目和私有项目。其首页截图如下

程序员必须知道的几个Git代码托管平台

程序员必须知道的几个Git代码托管平台

  1. coding.net https://coding.net

谈到 coding.net,首先必须提的是速度快,功能与开源中国相似,同样一个账号最多可以创建 1000 个项目,也支持任务的创建等

博客类

  1. CSDN https://www.csdn.net/

中国专业IT社区CSDN (Chinese Software Developer Network) 创立于1999年,致力于为中国软件开发者提供知识传播、在线学习、职业发展等服务。中国最大、最具专业的博客平台,同时也是质量最高的博客平台

  1. 博客园 http://www.cnblogs.com

这样一个不起眼的地方,却吸引了很多IT技术精英,把这里当作自己的网上家园,每天在这里分享着精彩的原创内容,也许他们看重的不是华丽的外表、诱人的虚名,而是纯净、专注、对技术人员的理解。

  1. 掘金 https://juejin.im/

掘金现在被字节跳动收购了,内容审核变得越来越严格,也涌现了很多大佬,他们写的文章非常帮,强烈推荐大家每天逛一逛,博客内容都是经过层层筛选的,非常值得一看

  1. 思否 https://segmentfault.com/

思否上面有很多大佬,不得不说思否的界面做的非常清新,舒服,这就让人很喜欢这个博客平台,目前看来还是比较小众,但是上面的开发者的互动很多,是一个很温馨的地方。s

  1. infoq https://www.infoq.cn/?utm_source=infoq&utm_medium=toutubiaoti

infoq 是最近兴起的一个技术社区,界面非常小清新,让人感觉很舒服,目前入驻的开发者倒不是很多,但是 infoq 依托极客邦的大流量和资源,做起来应该很快的,我入驻了 infoq ,感觉里面还是有很多大佬的,推荐大家经常浏览一波

  1. GitChat https://gitbook.cn

GitChat 是一个付费学习网站,当然也支持免费模式,因为付费所以相对文章质量比较高,但是免费的文章同样也很不错,而且我就在 GitChat 上面写了很多免费文章,不应该是很多,应该是全部免费,我的 gitchat 主页如下 程序员cxuan 的 GitChat

  1. V2EX https://www.v2ex.com

无论你是在大学进行人生最重要阶段的学习,或者是在中国的某座城市工作,或者是在外太空的某个天体如 Sputnik 1 上享受人生,在注册进入 V2EX 之后,你都可以为自己设置一个所在地,从而找到更多和你在同一区域的朋友。

  1. OSCHINA https://www.oschina.net

这个网站和CSDN一样是国内最大程序员社区,各种教程、资源、工具、书籍都是可以找到的。在社区里,你可以尽情的写博客,发动态,激烈的讨论问题,只有在这种环境下才能激起你学习的热情。

  1. 简书 https://www.jianshu.com/

简书是一个不仅仅为程序员提供的创作分享社区,上面充满了各种各样精彩的博文,也有很多优秀的博主,但是相比较与CSDN个人认为在技术创作方面就略低一筹了。

问答类

  1. 知乎 https://www.zhihu.com/

有问题,上知乎。知乎,可信赖的问答社区,以让每个人高效获得可信赖的解答为使命。

本是一个分享各种人生杂谈,和一些鲜为人知以及各种大牛的免费和付费的知识型网站。由于流量逐步扩大,吸引了大批优秀的程序员在上面分享自己的技术创作,也是一个程序员常去的网站之一,不仅仅是为了学习技术。

  1. 思否问答 https://segmentfault.com

SegmentFault 思否是中国领先的新一代开发者社区和专业的技术媒体。我们为中文开发者提供纯粹、高质的技术交流平台以及最前沿的技术行业动态,帮助更多的开发者获得认知

思否

教程类

  1. 菜鸟教程 https://www.runoob.com

菜鸟教程提供了编程的基础技术教程, 介绍了HTML、CSS、Javascript、Python,Java,Ruby,C,PHP , MySQL等各种编程语言的基础知识,是个小白入门,学习语言的好地方。

  1. w3schoool

在W3School,你可以找到你所需要的所有的网站建设教程。从基础的 HTML 到 CSS,乃至进阶的 XML、SQL、JS、PHP 和 ASP.NET。从左侧的菜单选择你需要的教程! 和菜鸟教程十分相似的网站。

  1. 易百教程 https://www.yiibai.com

易百网是一个内容全面的教程网站,专注于VBScript, MATLAB, EJB, IPv6, IPv4, 电子商务, PostgreSQL, SQLite, SDLC, Assembly, 操作系统, JSON, iOS, 设计模式, VB.Net, 计算机基础知识。

  1. Bilibili1 https://www.bilibili.com

期初这个网站是由游戏玩家视频火起来的,尤其LOL骨灰级玩家遍布其中。bilibili 是国内知名的视频弹幕网站,通过动漫打出了名声,最近两年发展势头迅猛,里面有不少有创意的 Up 主,不乏一些有趣的程序员。

  1. 中国大学MOOC网 icourse163.org

中国大学MOOC(慕课) 是国内优质的中文MOOC学习平台,由爱课程网携手网易云课堂打造。平台拥有包括985高校在内提供的千余门课程。在这里,每一个有意愿提升自己的人都可以免费获得更优质的高等教育。

  1. 慕课网-程序员的梦工厂 https://www.imooc.com

慕课网(IMOOC)是IT技能学习平台。慕课网(IMOOC)提供了丰富的移动端开发、php开发、web前端、android开发以及html5等视频教程资源公开课。

  1. 网易云课堂 https://study.163.com

网易云课堂,是网易公司打造的在线实用技能学习平台,主要为学习者提供海量、优质的课程,用户可以根据自身的学习程度,自主安排学习进度。涵盖实用软件、IT与互联网、外语学习、生活家居、兴趣爱好、职场技能、金融管理、考试认证、中小学、亲子教育等十余大门类。

  1. 实验楼 https://www.lanqiao.cn/courses

实验楼这个网站我直接吹爆,无需配置繁琐的本地环境,随时在线使用。

实验楼

算法类

  1. LeetCode https://leetcode-cn.com

几乎每个算法大牛都知道的神奇网站,这个网站上面有:算法、数据库、Shell、多线程等多种类型供你学习。多数人在上面练习编程算法,尤其是给想进入一线互联网公司的技术人员,提供了一个免费又方便的题库。面试前都会在上面进行长期和充分的刷题,是你的不二选择。

  1. LintCode https://www.lintcode.com

LintCode领扣上有数量超过1000道的算法题目和人工智能题目,通过刷题熟练掌握数据结构和算法。完成各大名企的阶梯训练,为你斩获心仪的offer打下坚实的基础

  1. 洛谷 https://www.luogu.com.cn

洛谷创办于2013年,致力于为参加noip、noi、acm的选手提供清爽、快捷的编程体验。它拥有在线测题系统、强大的社区、在线学习功能,也是一个很好练习刷题的网站啦

接单类

  1. 程序员客栈 https://www.proginn.com

程序员客栈是领先的程序员自由远程工作平台,未来互联网企业用人方式。提供优秀程序员为您进行网站建设制作、测试运维服务、人工智能AI、大数据区块链、软件开发等优质服务。

  1. 码市 https://codemart.com/developers

码市是互联网软件外包服务平台,意在连接需求方与广大开发者。让项目的需求方快速的找到合适的开发者,完成项目开发工作。

  1. 猿急送 https://www.yuanjisong.com/job

猿急送为您提供兼职程序员,兼职工程师信息,猿急送是一个高级技术共享平台,是优质的程序员兼职网站,这里汇聚BAT等知名互联网公司的技术开发、产品、设计大牛。

  1. 开源众包 https://zb.oschina.net

开源众包–专业的软件众包平台,350万+ 优质开发者为您提供网站、APP、微信/小程序、企业应用等软件开发服务,有效降低企业 IT 软件开发成本、解决技术资源不足等问题。

开源众包

  1. 实现网 https://shixian.com

这个比较高级,是一些知名公司技术人员兼职的平台。我们可以在线约好去其他公司兼职坐班。实现网为企业提供BAT等名企背景的、靠谱的开发设计兼职人才和自由职业者,满足企业项目外包、驻场开发、远程兼职、技术咨询等短期人力需求。

  1. 猪八戒 https://shenyang.zbj.com

猪八戒网企业外包服务,中国领先的灵活用工平台,其中服务品类涵盖LOGO设计、UI设计、营销推广、网站建设、装修设计、工业设计、文案策划、知识产权的服务。

  1. 码易众包平台 https://www.mayigeek.com

码易是智网易联旗下IT软件服务平台,集软件商城、企业应用、电商软件、crm软件、商务服务平台于一体的一站式软件外包开发服务平台。

求职类

  1. 牛客网 https://www.nowcoder.com

求职之前,先上牛客,就业找工作一站解决。这个网站不像csdn和OSChina以技术博客论坛为主了。但是在你需要的时候,却是相当有价值,里面有面试技巧、各种知名的不知名的互联网公司的对应往年校招社招面试题库,刷到你手软,一般应届生用这个比较多。

  1. 拉勾网 https://www.lagou.com

拉勾招聘是专业的互联网求职招聘网站。致力于提供真实可靠的互联网岗位求职招聘找工作信息,拥有海量的互联网人才储备,互联网行业找工作就上拉勾招聘,值得信赖的求职。

  1. Boss直聘 https://www.zhipin.com

BOSS直聘是权威领先的招聘网,开启人才网招聘求职新时代,让求职者与Boss直接开聊、加快面试、即时反馈,是一个致力于为招聘者和求职者搭建高效沟通、信息对等的平台

  1. 猎聘 https://www.liepin.com

猎聘,2018年香港上市。作为中国知名中高端人才求职招聘平台,汇聚56万+知名企业、16万+认证猎头,为5700万用户提供高薪工作岗位。总之,猎聘还是非常不错的。

/* * @Author: your name * @Date: 2016-09-06 00:00:00 * @LastEditTime: 2020-03-17 18:29:35 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \htdocs\usr\themes\default\footer.php */