「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

今回は、ソフトウェアの最後の停止に到達しました。つまり、ソフトウェアがリリースされ、サーバーにデプロイされます。実際、展開の過程で、特にマイクロサービスアーキテクチャの普及では、ソフトウェア自体がアジャイルな開発を使用するのが好きで、継続的なリリースの難しさも非常に大きく、プロジェクトがどのように編成されていても、プロジェクトが最終的に展開されている限り、通常どおりにアクセスできます。プロジェクトが展開されます。しかし、プロジェクトが解体され、多くのサービスが解体されると、現時点で展開するのは本当に簡単なことではありません。これを行うには、科学的な方法と経験を使用する必要があります。

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

大規模なシステムリリースが直面する問題

特に今では多くのリーダーがアジャイル開発を好み、アジャイル開発は一週間で開発されたであろう機能につながります。彼はあなたに2日を言います。なぜ2日かかるのですか?アジャイル開発は速いですアジャイル開発自体に問題があります

  • 現在公開している企業の数。どのくらいの頻度で投稿しますか。

    周りのいくつかの状況

1.自分で梱包し、リーダーに伝えた直後に解放します。リーダーがそれが解放されると言ったとき。
2.運用および保守担当者にプロジェクトgitの場所を伝え、運用および保守にオンラインになるように通知して、本番環境にリリースします。(プロジェクトが数百または数十ある場合は、運用と保守に、運用と保守に必要なチームの規模を伝えます)
3。毎日小さな更新があり、毎日リリースされます。
4.プロジェクトリリースでは、ビルドとリリースを自動化するために使用されるjenkinsツールを使用します。


  • 1前後のリリースに存在する問題について話します。問題はなく、パラメーターが間違っています。
    2.依存プロジェクトはリリースされておらず、最初にリリースしました
    。3。プロジェクト自体の依存バージョンは今回リリースされないため、独自のプロジェクトはそのプロジェクトの機能に依存します
    。4。運用および保守担当者は、テスト環境のコードを実稼働環境にリリースします。

  • ロールバックによる事故

    ロールバックは一般的に困難です。コードレベルのみの場合は、バックアップして最後にロールバックするだけでかまいません。データベースの更新が必要な場合は、恥ずかしいですか?新しいバージョンのデータは更新されていますが、コードは更新されています。ロールバックしましたが、データを未洗浄の状態に更新しますか?過去にブラッシングしたスクリプトがあるかもしれませんが、ブラッシュバックしたスクリプトはそうではないかもしれません。これは事故です。

プロジェクト、特に大規模なプロジェクトを解体するために、大規模なインターネットプロジェクトが散在し、数十、それらのプロジェクトが散在していますが、以前はまだプロジェクトの依存関係があり、実際にリリースしています。とても難しいことです。

  • ソフトウェアのリリースは、実際には非常に難しいことです。管理担当者のレベル、全体的な状況を制御する方法、およびそれらを順番に実行する方法をテストします。

    アジャイルな開発モデルやマイクロサービスが普及するにつれ、ソフトウェアの統合が難しくなり、継続的な展開が難しくなります。リリースによる事故を減らし、対話サイクルを短縮し、持続可能な展開を実現するにはどうすればよいでしょうか。実はこれも世界の問題で、難しすぎて、自分のビジネスに合わせてしか設定できず、最新で最高のものではなく、最適なものです。

  • ソフトウェア開発フェーズ

    ソフトウェア開発の正しい段階:コーディング>ビルド>統合>テスト>配信>展開
    持続可能な統合>持続可能な展開>持続可能なリリース

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

  • 継続的な統合(統合)

    統合:単一の開発の場合、統合はありません。すべての機能が1つのプロジェクトに含まれ、ソフトウェア開発プロセスに統合されています。これは、統合と同等です。ダブル11のトレーディングセンターなどのプロジェクトでは、ショッピング情報を送信する際に、インベントリセンター、プロダクトセンター、ペイメントセンター、メンバーセンター、通知センターに依存する機能が開発されないことがますます一般的になっています。注文を送信する機能の開発は、後で多くのシステムに依存し、注文の送信を変更するという小さなバグを追加すると、変更が必要なN以上のプロジェクトに影響を与える可能性があります。注文送信プロジェクトを展開する可能性が高く、他の複数のプロジェクトを同時に展開する必要があります。

公式説明:ソフトウェアの個人的なR&D部分はソフトウェアの全体部分に配信され、エラーをより迅速に見つけるために頻繁に統合が実行されます。

  • 継続的な相互作用(DELIVER)

    相互作用:オンラインリハーサル環境と同様に、グレースケール環境と呼ばれることもあります。テストするときは、最初にリハーサル環境を通過する必要があります。一部の機能要件はそれほど厳密ではなく、リハーサル環境なしで直接テストできます。詳細会社は、構築直後に展開する場合があります。

公式説明:継続的な統合に基づいて、統合されたコードを実際の運用環境に近づけるように展開します

  • 継続的な統合、継続的な相互作用が直面する最大の問題

    調整と書き込みの問題は
    パッケージによって異なり、依存プロジェクトは同時に開始されることに同意しますが、理由がわからない場合はチェーンが切断されます。自分のプロジェクトをスケジュールどおりにリリースすることはできませんが、自分のプロジェクトは別の機能に依存している可能性があります。必要になる可能性のあるインターフェイスにより、他のインターフェイスの解放に失敗し、チェーンが形成され、1つの機能が期待どおりに機能せず、他のすべての機能が期待どおりに機能しなくなります。すべてが崩壊した。

1.最大の問題は調整と協力です
。2。その時点で合意されている場合、緊急計画を検討するかどうかは、提供できないことを事前に通知します。

  • スムーズで持続可能な統合には、次の点が必要です
    。1。明確で実行可能なリリースプロセス
    2.プロセスに精通したリリース管理コーディネーター(この種の人はマルチスレッドの問題に長けている必要があります)
    3。効果的なコミュニケーションとフィードバックメカニズム(情報フィードバックの合流点)
    4。持続可能性統合ツール(ジェンキンス)
    5。バージョン管理ツール(コード管理ツールだけでなく、毎日のプログラムファイルSVN)

バージョンリリースプロセスに必要な環境(confluence、SVN)

  • 情報調整ツール(コンフルエンス)
    1。月次リリース計画(大まかな)
    2。週次リリース計画(製品マネージャー、この日次リリース機能を
    送信3。テスターは特定のリリースウィンドウ計画ドキュメントを送信します(開発者は今回自分で作成します)責任あるシステム、依存関係、およびスクリプトのチェックリストは、
    オンラインになる前の特定の時間に変更でき、ドキュメントを一緒に作成できます)4。オンラインインシデントレポート(バグ修復計画)

  • バージョン管理ツール(コードレベルではなくリリースファイル)

    git(gitの手順は面倒で、追加、コミット、プッシュが必要です)
    nexus
    ftp(共有ファイル)が最も簡単な方法です。
    svn

  • 合流

    はじめに:Confluenceは、エンタープライズWikiの構築にも使用できる、プロフェッショナルなエンタープライズナレッジ管理およびコラボレーションソフトウェアです。使い方は簡単ですが、その強力な編集機能とサイト管理機能は、チームメンバーが情報を共有し、コラボレーションを文書化し、グループディスカッションを行い、情報をプッシュするのに役立ちます。また、社内でチームコラボレーションソフトウェアとして使用して、単語、execel、pptなどをオンラインで編集することもできます。この機能は、Tencentのオンライン単語編集であるexecelに似ています。しかし、それはより強力です。
    ソースコード:https//github.com/limingios/netFuture/tree/master/confluence

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

公式ウェブサイト:https//www.atlassian.com/software/confluence/download-archives
最新のものを使用することはお勧めしません。ソフトウェア自体は有料です。ひびが入る可能性があるため、5.6.6をダウンロードすることをお勧めします。

環境の準備
1.CentOS 7 2.java
jdk 1.8
3.mysql-server 5.6
4.confluence 6.9.1

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

  • サービス情報

    vagrantを介して仮想マシンを生成する

システムタイプ IPアドレス ノードの役割 CPU 記憶 ホスト名
Centos7 192.168.68.100 合流 2 4G 合流
vagrant up
su -
#密码 vagrant
vi /etc/resolv.conf
#nameserver 8.8.8.8
reboot
  • jdkのインストール

    Jdk8をインストールする必要があります

wget wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"
#上边的下载比较慢,建议不通过wget的方式,本地下载后上传上去,我下载了3个多小时,当时正好想看电视剧看了几集
tar -zxvf jdk*
cd jdk*
#获取jdk目录填写到下面JAVA_HOME中
pwd
#追加环境变量
echo "export JAVA_HOME=/root/jdk1.8.0_141" >> /etc/profile
echo "export PATH=$""JAVA_HOME/bin:$""PATH" >> /etc/profile
#执行下面这个才能生效
source /etc/profile
java -version
javac -version

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

  • mysqlのインストール
#下载mysql 源
wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
#安装mysql 源
yum -y install mysql57-community-release-el7-11.noarch.rpm
#安装mysql,中间会弹出是与否的选择,选择y即可,然后耐心等待吧。。。。。。。
yum  install mysql-community-server
#启动mysql
systemctl start  mysqld.service
#查看mysql状态
systemctl status mysqld.service
#查看初始密码
grep "password" /var/log/mysqld.log
#登录
mysql -uroot -p
#输入刚才查看的初始密码

#修改密码:我这里修改成:1qaz@WSX
ALTER USER 'root'@'localhost' IDENTIFIED BY '1qaz@WSX';

#授权远程访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '1qaz@WSX' WITH GRANT OPTION;

#刷新上边操作,就是提交操作
FLUSH PRIVILEGES;
#退出mysql控制台
exit

#设置自动启动
systemctl enable mysqld
systemctl daemon-reload

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

Confluenceは組み込みデータベースを使用できますが、実稼働環境として、独自のデータベースを使用することをお勧めします。
データベースをインストールするときは、さまざまなデータベースをサポートします。ここではmysqlを使用します。両方のバージョン5.6 / 5.7できる。mysqlに接続する必要があるjarパッケージmysql-connectorもあります。

1つ目は構成ファイル/etc/my.cnfで、[mysqld]タグの下に追加します

vi /etc/my.cnf
[mysqld]
character-set-server=utf8
collation-server=utf8_bin
default-storage-engine=INNODB
max_allowed_packet=256M
innodb_log_file_size=2GB
sql_mode = NO_AUTO_VALUE_ON_ZERO
transaction-isolation=READ-COMMITTED
binlog_format=row

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

最後に、mysqldを再起動し、mysqldにログインして、文字セットを表示します。データベースの作成時に設定されるパスワードは、1qaz @WSXです。

service mysqld restart
mysql -uroot -p
mysqld [(none)]> show variables like "%character%";show variables like "%collation%";

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

Confluenceに対応するデータベース、ユーザー名、パスワードを作成します

create database confluence default character set utf8 collate utf8_bin;
grant all on confluence.* to 'root'@'%' identified by '1qaz@WSX';
flush privileges;
  • Confluenceをインストールする
# 下载安装程序
wget https://product-downloads.atlassian.com/software/confluence/downloads/atlassian-confluence-6.9.1-x64.bin
# 授权安装程序执行权限
chmod a+x atlassian-confluence-6.9.1-x64.bin
# 执行安装程序,进行安装:

./atlassian-confluence-6.9.1-x64.bin
[root@confluence ~]# chmod a+x atlassian-confluence-6.9.1-x64.bin
[root@confluence ~]# ./atlassian-confluence-6.9.1-x64.bin
Unpacking JRE ...
Starting Installer ...

This will install Confluence 6.9.1 on your computer.
OK [o, Enter], Cancel [c]
#选择确定安装
o
Click Next to continue, or Cancel to exit Setup.

Choose the appropriate installation or upgrade option.
Please choose one of the following:
Express Install (uses default settings) [1], 
Custom Install (recommended for advanced users) [2, Enter], 
Upgrade an existing Confluence installation [3]
#目录选择自定义
2

Select the folder where you would like Confluence 6.9.1 to be installed,
then click Next.
Where should Confluence 6.9.1 be installed?
[/opt/atlassian/confluence]
#这里填写自定义目录
/usr/local/atlassian/confluence

Default location for Confluence data
[/var/atlassian/application-data/confluence]

Configure which ports Confluence will use.
Confluence requires two TCP ports that are not being used by any other
applications on this machine. The HTTP port is where you will access
Confluence through your browser. The Control port is used to Startup and
Shutdown Confluence.
Use default ports (HTTP: 8090, Control: 8000) - Recommended [1, Enter], Set custom value for HTTP and Control ports [2]
#端口默认8090
1

Confluence can be run in the background.
You may choose to run Confluence as a service, which means it will start
automatically whenever the computer restarts.
Install Confluence as Service?
Yes [y, Enter], No [n]
#自动启动 选择y
y

Extracting files ...

Please wait a few moments while we configure Confluence.

Installation of Confluence 6.9.1 is complete
Start Confluence now?
Yes [y, Enter], No [n]
#选择y
y

Please wait a few moments while Confluence starts up.
Launching Confluence ...

Installation of Confluence 6.9.1 is complete
Your installation of Confluence 6.9.1 is now ready and can be accessed via
your browser.
Confluence 6.9.1 can be accessed at http://localhost:8090
Finishing installation ...

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

https://blog.csdn.net/weixin_41004350/article/details/80590421

アクセスするブラウザを入力してください。英語の場合は、[言語]中国語を選択し、[製品のインストール]を選択できます。

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

まだプラグインを選択しないでください

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

サーバーIDを記録します(B5BE-SJ3C-N42I-XCN0)

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

ひびの入ったファイルを抽出し、Confluenceを閉じます

# 进入你安装的目录
cd /usr/local/atlassian/confluence    
 # 关闭confluence
bin/stop-confluence.sh  
# 将confluence 下面的一个atlassian-extras-decoder-v2-3.3.0.jar包复制一份出来
cp confluence/WEB-INF/lib/atlassian-extras-decoder-v2-3.3.0.jar ~/

# 将其改名为atlassian-extras-2.4.jar
mv ~/atlassian-extras-decoder-v2-3.3.0.jar ~/atlassian-extras-2.4.jar
#安装传输工具
cd ~
yum -y install lszrz

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

ひびの入ったファイル、ソースコードにあります。

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)
次に、ローカルウィンドウコンピュータの操作:
①ダウンロードしたクラッキングツールを開き、confluence_keygen.jarを実行
します。②記録されたサーバーIDを入力し、名前を入力します。
③genをクリックし、キーを生成して記録します。
④パッチをクリックし、ローカルにダウンロードしたばかりのatlassian-extras-2.4.jarファイルを選択してクラックします。
⑤クラッキングツールを閉じないでください。後でキーをコピーする必要があります。

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

OK、クラッキングが完了したら、クラッキングされたファイルをサーバーに送り返します

cd ~
mkdir bak
cd bak
# 传回服务器后,将名称改回之前的名称
mv atlassian-extras-2.4.jar atlassian-extras-decoder-v2-3.3.0.jar

# 然后覆盖回原路径
mv atlassian-extras-decoder-v2-3.3.0.jar /usr/local/atlassian/confluence/confluence/WEB-INF/lib/

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

Confluence自体はmysqlドライバーを統合していません。自分でダウンロードしてアップロードする必要があります。元々、インストール時に、キーを入力した後、mysql接続情報を入力する必要があります。mysqlの構成方法を説明する公式ドキュメントへのリンクがあります。ただし、設定が完了してから再起動する必要があり、前回のクラッキングで問題が発生するため、ここですべて完了してから再起動する必要があります。公式チュートリアルドキュメントのアドレスは次のとおりです。
https://confluence.atlassian.com/doc/database-setup-for-mysql-128747.html
ソースコードに含まれるもの:mysqlドライバーを
解凍し、mysql-connector-java-5.1.46-bin.jarをサーバーにアップロードする、confluenceのクラスディレクトリの下に置きます。

sz 

cp mysql-connector-java-5.1.46-bin.jar /usr/local/atlassian/confluence/lib/

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

  • 上記の操作が完了したら、再起動が完了した後にコンフルエンスを再起動します。

    トラブルが起こらないようにするためにお金をかけたくない

service confluence start

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

キーを入力するためのインターフェイスに戻り、上記で記録したキーを入力し[前にクラッキングソフトウェアを閉じないでください]、[次へ]をクリックします

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

自分のデータベースを選択してください

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

これでインストールは完了です。Confluenceの使用に関してhttp://www.confluence.cn/pages/viewpage.action?pageId=360467、インターフェイスの説明はソフトウェア開発に使用されていますか?これは、ソフトウェア開発プロセスのドキュメントのアイデアに非常によく適合します

  • SVNの
    インストール1.yumコマンドを使用してsvnserveをインストールします
    yum -y install subversion

    「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

2.バージョンライブラリディレクトリを作成します(これは単なるディレクトリであり、後でバージョンライブラリを作成するための保存場所を提供します)

mkdir /var/svnrepos
  1. リポジトリディレクトリを作成する
    svnadmin create /var/svnrepos/svn

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

  1. svnを構成する

    authz:アカウントのアクセス許可の管理を担当し、アカウントに読み取りおよび書き込みのアクセス許可があるかどうかを制御します
    passwd:アカウントとパスワードのユーザーリストの管理を担当します
    svnserve.conf:svnサーバー構成ファイル

    cd /var/svnrepos/svn/conf

    「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

authzファイルの編集
[/]:ルートディレクトリを示します。つまり、/ var / svnrepos
admin = rw:ユーザーluoがルートディレクトリへの読み取りおよび書き込み権限を持っていることを示します。

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

passwdファイルを編集する

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

svnserve.confファイルを編集します(注:構成の前にスペースを入れることはできません。上部に書き込む必要があります)
anon-access = none:匿名ユーザーによるアクセスが禁止されていることを意味します。
auth-access = write:許可されたユーザーが読み取りおよび書き込み権限を持っていることを示します。
password-db = passswd:ユーザー名とパスワードファイル、つまりpasswdファイルを指定します。
authz-db = authz:権限プロファイル、つまりauthzファイルを指定します。
realm = / var / svnrepos:認証ドメイン、つまり/ var / svnreposディレクトリを指定します。

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

「インターネットアーキテクチャ」ソフトウェアアーキテクチャ-ソフトウェア環境の継続的なリリース管理(パート1)

PS:今回は主にプロジェクト管理の問題とその解決方法について話しました。また、非常に優れたソフトウェアであるconfluenceとsvnのインストールについても話しました。Confluenceはいくつかのブラックテクノロジークラッキングスキームについて話しました。

おすすめ

転載: blog.51cto.com/12040702/2588451