gtid = source id : transaction id로 구성


source id는 서버 식별자(server_uuid)
transaction_id는 해당 서버에서 커밋된 트랜잭션의 순서에 따라 순차적인 숫자로 결정된다.
예로 첫 번째 트랜잭션은 transaction_id=1이 되고, 동일한 서버에서 열 번째 트랜잭션은 transaction_id=10이 된다.



gtid 설명한 좋은 블로그 : https://minsugamin.tistory.com/entry/MySQL-57-GTID


MySQL 5.7 GTID

GTID(Global Transaction Identifiers) GTID를 사용하게 되면, 각각의 트렌젝션들은 고유한 전역식별자를 갖게 된다 master 서버에서 수행된(commited) 트랜젝션들이 slave 서버(들)에 적용되어 지는 것에대한 추..

minsugamin.tistory.com



Posted by '김용환'
,


JPA를 사용하는 애플리케이션에서 

debezium에 저장된 데이터를 kafka consume할 때 null이 나오는 경우를 확인했다. 


JPA에서 delete 쿼리를 보낼 때 delete record와 null이 나옴



JPA에서 

 update hibernate_sequence set next_val= 501367 where next_val=501366 실행되지만, 

debezium에서 읽을 수 있는 데이터가 아니라 카프카 토픽에 null이 저장된다.

이런 쿼리가 DB에 실행되고 transaction id가 늘어난다.

Posted by '김용환'
,


Ansible Up and Running 2nd 번역책이 드디어 2019년 6월 28일 출간되었다.





http://www.yes24.com/Product/Goods/74633507?scode=032&OzSrank=1


책소개

환경설정 배포가 손쉬운 자동화 툴 앤서블(Ansible)은 에이전트(Agent) 기반이 아닌 SSH 기반으로 SSH 연결을 통해 코드를 전송하고 스크립트를 실행한다. 베이그란트를 실험 머신으로 설정하고 앤서블과 연동되도록 설치 및 설정한다. 플레이북의 기능을 설명하고 한 대 또는 여러 대의 베이그란트 실험 머신에 파이썬 웹 애플리케이션을 배포한다. 앤서블의 기본 기능인 변수 및 팩트, 플레이, 롤, 태스크뿐 아니라 고급 필터, 룩업, 루프, 핸들러, 콜백 핸들러, 사용자 정의 모듈 등을 다룬다. 플레이북 디버깅 방법과 아마존 EC, 도커, 윈도우 호스트, 네트워크 장비에서 앤서블 사용 방법을 살펴보고 마지막으로 앤서블 타워를 설명한다. 『앤서블 시작과 실행』 은 리눅스 또는 유닉스 계열의 서버를 다뤄야 하는 사람들을 위한 책으로 시스템 관리, 운영, 배포, 설정 관리, 데브옵스(DevOps)라는 용어를 사용한 적이 있다면 여기에서 가치를 찾아야 한다. 또한 이 책은 처음부터 끝까지 읽을 수 있도록 작성됐고 이전 장을 기반으로 다음 장이 작성됐다. 주로 튜토리얼 형태로 작성됐기에 사용자의 컴퓨터로 따라 할 수 있다. 대부분의 예시는 웹 애플리케이션에 집중하고 있다.




역자 서문


저는 2014년에 네이버 주관 Deview에서 앤서블에 대해서 발표하고, 2015년에는 에이콘

출판사를 통해 국내에 처음으로 앤서블 번역책을 선보였습니다. 저는 앤서블이 많은 개발자,

데브옵스(DevOps), 시스템 관리자를 편하게 도와줄 것이라 믿었기 때문입니다. 그 믿음은

현실화되었고, 이제는 앤서블을 사용하지 않는 곳은 거의 없을 정도입니다.

서버에 배포와 관련된 에이전트를 설치하지 않고 단순히 서버 접근 권한과 앤서블만 있으면

작은 대수의 서버부터 수 백, 수 천대의 서버를 관리할 수 있습니다. 가상화, 클라우드

환경까지 다룰 정도입니다. 또한 멱등성, 단순한 설치, 설정 기능을 넘어서 애플리케이션

배포까지 담당하고 있습니다. 이제는 생산성을 향상시킬 수 있는 필수 툴이 되고 있습니다.

레드햇에 따르면 특정 회사에 대해 앤서블을 이용한 업무 자동화 컨설팅을 진행해 대응 및

소모 시간을 66~80%까지 단축했다고 합니다. 그만큼 운영 자동화 툴, 앤서블을 이용한

생산성 혁신은 매우 의미 있다고 할 수 있습니다.

이 책은 베이그란트를 실험 머신으로 설정하고 앤서블과 연동되도록 설치 및 설정합니다.

플레이북의 기능을 설명하고, 한 대 또는 여러 대의 베이그란트 실험 머신에 파이썬 웹

애플리케이션을 배포합니다. 앤서블의 기본 기능인 변수 및 팩트, 플레이, 롤, 태스크 뿐

아니라 고급 필터, 룩업, 루프, 핸들러, 콜백 핸들러, 사용자 정의 모듈 등을 다룹니다.

플레이북 디버깅 방법과 아마존 EC, 도커, 윈도우 호스트, 네트워크 장비에서 앤서블 사용

방법을 살펴봅니다. 마지막으로 앤서블 타워를 설명합니다.

이 책은 2017년에 출간된 책이지만 번역자가 최신 우분투 18.04, 베이그란트(Vagrant) 2.2.2,

파이썬 3.7, 앤서블 2.7.5 버전을 기준으로 설명하였고,

https://github.com/knight76/ansiblebook에 소스를 올려놨습니다.

이 책을 통해 즐겁게 앤서블을 배워가면 좋겠습니다.

Posted by '김용환'
,


오랜만에 본 재미있는 글인 것 같다.

저자 자신 만의 관점으로 플랫폼을 살펴본 글이라 재미있었다.


'플랫폼 제국의 미래'이라는 책은 기존의 좋은 기업, 위대한 기업의 성공 신화에 대한 찬양 관점이 아니라 구글, 아마존, 페이스북, 애플 기업의 역사와 현재 위치를 분석해 불공정과 본질에 대한 얘기를 하는 책이다. 


저자는 구글, 아마존, 페이스북, 애플 등 성공한 모든 기업을 사람에 대한 뇌, 심장, 생식기, 손라는 신체라는 매력 포인트에 매칭시켜 설명한 내용이 인상 깊었다.


안 본 사람이라면 아래 내용이 도움이 될 것 같다. 


https://medium.com/@Creativ.S/%ED%94%8C%EB%9E%AB%ED%8F%BC-%EC%A0%9C%EA%B5%AD%EC%9D%98-%EB%AF%B8%EB%9E%98-the-four-the-hidden-dna-of-amazon-apple-facebook-and-google-1-f13cd4d59663


https://medium.com/@Creativ.S/%ED%94%8C%EB%9E%AB%ED%8F%BC-%EC%A0%9C%EA%B5%AD%EC%9D%98-%EB%AF%B8%EB%9E%98-the-four-the-hidden-dna-of-amazon-apple-facebook-and-google-2-20bd2b815e73



Posted by '김용환'
,

페이스북, 암호화폐 발행 공식화…'리브라' 내년에 나온다 

http://www.zdnet.co.kr/view/?no=20190618203414


리브라 싸이트는 다음과 같다.

https://libra.org/en-US/white-paper/?noredirect=1


이를 번역한 글

https://ebadak.news/2019/06/18/facebook-coin-libra-whitepaper/?fbclid=IwAR1V_zA2GGacyK3V0Yirf1YN5r-2pPwe2aSGr9nVNGMZ_6Lw_LwBh-7-G1Y


포인트

- 높은 보안성, 확장 가능, 신뢰성 있는 블록체인 기반이다. 실제 예비 자산에 은한 가치 담보를 갖는다. 독립 기관인 'Libra Association'에 의해 통제된다.

- Libra Association: 스위스 제네바에 위치한 독립적 비영리단체.

- IT/커머스/금융/벤처캐피탈/비영리단체(Mastercard, Uber, eBay, Vodafone , Visa등) 28개 멤버이 설립했고 2020년까지 100개 이상 모일 것이다

- 2020년 상반기 런칭하고 5년 내 실제 거래 가능한 생태계를 구축하는데 목표를 가진다

- 전세계 사용 가능( visa, mastercard..)

-  개인 정보 주도권(DID)는 없어 보임

https://www.zdnet.com/article/microsoft-forget-google-facebook-log-in-with-our-new-blockchain-id/

https://www.blockmedia.co.kr/archives/92121?print=print

- 인가된(permissioned) blockchain이니 libra association 내의 validator node가 인정한 곳에서만 사용 가능하다

- 참여 업체(Visa, MasterCard 등등)가 보증하기 채굴 개념과 시세 차익 없는 화폐 같은 개념이다.

- 리브라 블럭체인은 Move 프로그래밍 언어를 사용한다


기타 자료(https://www.datadriveninvestor.com/2019/06/18/crypto-diaries-facebook-reveals-the-white-paper-for-its-stable-coin-libra/) 도 참고


- 1000 TPS 지원

- Calibra라는 자회사가 모든 암호 거래와 사용자 데이터의 프라이버시를 처리하고 Libra 화폐의 지갑 역할을 할 것이다. (페이스북의 간접 참여)



=== 2019.10.15 업데이트


https://www.cnbc.com/2019/10/11/ebay-drops-out-of-facebook-libra-cryptocurrency-one-week-after-paypal.html


 Paypal 탈퇴 후 4개 기업 추가 탈퇴 발표

Posted by '김용환'
,


jenkins에서 proxy 설정, update-center 작업을 수작업으로 일반적으로 작업한다. 

절차는 다음과 같다.


1. Use browser for metadata download 설정

Manage Jenkins -> Configure Global Security -> Plugin Manager -> Use browser for metadata download를  check on한다.


2. plugin 관리에서 Proxy 서버를 추가

http://jenkins장비:8080/pluginManager/advanced에서 proxy 설정 넣어야 한다.



이런 작업을 ansible로 자동화 할 수 있다. (1:1로 매핑하기 보다는 잘 동작하게)

- name: Configure Proxy
environment:
no_proxy: "localhost"
jenkins_script:
url: "http://localhost:8080"
script: "{{ lookup('template', 'proxy.groovy') }}"
validate_certs: False
timeout: 120

- name: Change Update-Center protocol
replace:
path: "{{ jenkins_home }}/hudson.model.UpdateCenter.xml"
regexp: 'https://updates.jenkins.io/update-center.json'
replace: 'http://updates.jenkins.io/update-center.json'



templates/proxy.groovy 파일

import jenkins.model.*

def instance = Jenkins.getInstance()

final String name = 'proxy.daumkakao.io'
final int port = 3128
final String noProxyHost = [
'localhost', '127.0.0.1', '127.0.0.0/8',
'...'
].join('\n')

final def proxyConfig = new hudson.ProxyConfiguration(
name, port, null, null, noProxyHost)

instance.proxy = proxyConfig
instance.save()


Posted by '김용환'
,



Jenkins UI에서 플러그인 설치하려 할 때 다음 에러가 난다.

java.net.SocketTimeoutException: connect timed out


jenkins plugin 앤서블에서는 에러가 발생한다.

"details": "HTTP Error 403: Forbidden", 

"msg": "Cannot get CSRF"


이 이유는 바로 proxy 설정 때문에 발생하는 것이다.



Proxy 설정을 잘 주어 젠킨스 플러그인을 설치한다.  jenkins_plugin은 localhost:8080을 호출하기 때문에 no_proxy를 주어야 한다.


 - name: Install jenkins plugins.

  jenkins_plugin:

    owner: "{{default_user}}"

    group: "{{default_group}}"

    jenkins_home: "{{ jenkins_home }}"

    name: "{{ item }}"

    state: latest

  environment:

    no_proxy: "localhost"

    http_proxy: "{{proxy_env.http_proxy}}"

    https_proxy: "{{proxy_env.http_proxy}}"

  with_lines: cat "../../templates/jenkins/plugins/plugins.lst"



Posted by '김용환'
,


맥에서 iterm2를 사용 중인데, 서버에 접근하면 한글 파일이 잘 보이지 않는다.


서버 설정은 잘 되어 있다.

$ env|grep LC

LC_ALL=ko_KR.utf8

$ env|grep LANG

LANG=ko_KR.utf8



한글 디렉토리와 파일은 ???로 나타난다.

jenkins를 실행하면 제대로 파일을 읽지 못한다.


SEVERE: Could not restore backup.

java.io.FileNotFoundException: /google/program/jenkins_backup/jobs/(?????????) ansible-common (No such file or directory)

at java.io.FileInputStream.open0(Native Method)

at java.io.FileInputStream.open(FileInputStream.java:195)


이유는 무척 단순했다.

최근 맥북을 받았는데. LC와 LANG을 설정이 안되어 있는데..


$ env | grep LC

$ env | grep LANG


iterm 기본 설정은 로컬 변수를 서버까지 가지고 가는 형태였다.(대박.)


따라서 맥북에 iterm2를 사용할 때는 반드시 Profiles/Terminal/Environment을 살펴보고.

Set locale variable automatically 설정은 check off해야 한다.





서버 설정이 아니라 내 기본 설정 이슈였다.

'scribbling' 카테고리의 다른 글

무표 폰트 다운로드받는 곳  (0) 2019.08.06
물류 쪽 관련 내용 스크랩  (0) 2019.07.26
펌) 마이그레이션 전략  (0) 2019.04.24
구글의 원격 협업 관련 내용  (0) 2019.04.05
MCN  (0) 2019.04.01
Posted by '김용환'
,

scala cats 공부 자료.

scala 2019. 6. 18. 20:53
Posted by '김용환'
,


git 프로젝트를 다운받을 때 github key를 사용해 다운로드 한다. 


앤서블을 사용하는 첫 번째 방법 - ~/.ssh/config 파일을 수정한다

Host github.com

  IdentityFile ~/.ssh/github_rsa


- name: Download config
git:
repo: git@github.com:uj/config.git
dest: "{{program_path}}/config"
force: yes
clone: yes



앤서블을 사용하는 두 번째 방법 - 직접 key 파일을 가르키게 한다.


- name: Download thin-backup source
git:
repo: git@github.com:uj/config.git
dest: "{{program_path}}/config"
force: yes
clone: yes
accept_hostkey: yes
key_file: /home/www/.ssh/github_rsa


Posted by '김용환'
,