본문 바로가기

분류 전체보기

2019년 계획하기 #도서소프트웨어 공학SRE - 사이트 신뢰성 엔지니어링 (ing)함께 자라기 - 애자일로 가는 길 (done)매니지먼트 3.0 리팩토링/디자인패턴개발자가 반드시 정복해야 할 객체 지향과 디자인패턴 (ing)레거시 코드 활용 전략 - Michael Feathers 테스트주도개발 - 켄트백리팩토링: 코드 품질을 개선하는 객체지향 사고법 - 마틴파울러옵션 - 클린 코드: 애자일 소프트웨어 장인 정신 심리학성공의 새로운 심리학 - 캐롤 드웩 #오픈소스saleor 코드 분석하기 saleor 커미터되기 #프론트코드스피츠 강의 듣기 django-oscar에 angular 적용해서 프론트 만들어보기 #기타도커테스트 환경 도커 만들어보기도커 파일 만들어서 장고 애플리케이션 CodeDeployAgent에 붙여보기 인프라T..
2018년 연간로그 #스터디 작년에 총 4개의 스터디를 했다. Real MySQL, quality software management, TDD Coding Dojo, AWS Code Deploy Agent 오픈소스 커미터되기 1/2차 QSM 스터디 모임을 시작한지 어느새 7개월이 되었다. 처음에는 제럴드 와인버그 원서를 읽어보고 싶단 마음으로 가볍게 시작했었다. 원서 스터디 이후에는 오픈 소스 커미터 되기 스터디로 이어졌다.스터디에서 AWS Code Deploy Agent의 이슈 4개를 해결했다. 하하핳 ( 이거슨 내가 날린 풀리퀘 -> https://github.com/aws/aws-codedeploy-agent/pull/203 ) 생각만하고 실천하지 못했던 일들을 이루게해주는 모임인 것 같다. 그리고 TDD Coding..
(PostgreSQL) Transaction과 Lock에 대한 이모저모 Table Lock Mode Table Lock Mode에 따라 공존할 수 있는 Lock이 있고, Conflict나는 Lock이 있다. SELECT를 막는 Table Lock은 ACCESS EXCLUSIVE 뿐이다. Lock Mode의 최종보스다. SELECT FOR SHARE는 FOR UDPATE, FOR SHARE 쿼리에서 필요하다.EXCLUSIVE는 UDPATE / DELETE 등의 쿼리에서 필요하다. EXCLUSIVE Lock 모드는 서로 충돌난다. 그래서 동일한 Row를 여러 트랜잭션에서 동시에 업데이트할 수 없는거다. SHARE UPDATE EXCLUSIVE는 Vacuum, 인덱스 추가 등의 쿼리에서 필요하다. Transaction과 Lock Blocking트랜잭션이 느린 경우, 어디서 Loc..
(온라인스터디) TELECONSOLE + teletype Atom 온라인 오픈소스 스터디할 때, 행아웃으로 화면공유를 하니까 잘 안보였다.그래서 터미널을 공유할 수 있는 프로그램인 TELECONSOLE과, ATOM 화면을 공유할 수 있는 teletype Atom을 써봤었는데, 신세계였다. 😻온라인으로 협업할 일이 있으면, 요 두개를 가져다 쓰면 완전 좋다. TELECONSOLE teletype Atom 텔레타입 아톰은 Host Atom에 게스트 Atom이 접속하는 개념인데, 읽기 권한만 있는 구글 드라이브 문서를 보듯.. 아톰 화면을 볼 수 있다.
<사이트 신뢰성 엔지니어링> - 2부 요약 본문 중에서...Chapter 6. 분산 시스템 모니터링 알럿 호출 방식 철학매번 호출기가 울릴 때마다 긴급한 상황임을 인지하고 그에 대응할 수 있어야 한다. 이러한 긴급 호출은 빈번한 호출로 인한 피로를 느끼지 않도록 하루에 단 몇번 정도만 발생해야 한다.모든 호출은 대응이 가능해야한다.호출은 새로운 문제나 지금까지 보지 못한 사건에 대한 것이어야 한다.호출에 대한 모든 대응은 이성적이어야 한다. 장기적 모니터링 장애 호출에 대해 이미 정해진 규칙에 의해 대응하는 것은 위험 신호다. 팀의 그 누구도 이런 호출에 대해 자동화를 할 의지가 없다는 것은 팀이 스스로 만든 기술 부채를 해소할 자신이 없다는 것을 암시한다. 한 걸음 더 나아가기 순수한 노력의 힘은 너덜너덜한 시스템을 고가용성을 갖춘 시스템으로 ..
(PostgreSQL) Lock 경합 상태 확인하기 Block된 SQL 프로세스 조회 SQLSELECT blocked_locks.pid AS blocked_pid, blocked_activity.usename AS blocked_user, blocking_locks.pid AS blocking_pid, blocking_activity.usename AS blocking_user, blocked_activity.query AS blocked_statement, blocking_activity.query AS current_statement_in_blocking_process FROM pg_catalog.pg_locks blocked_locks JOIN pg_catalog.pg_stat_activity blocked_activity ON blocked_act..
(PostgreSQL) DB Lock을 줄이는 7가지 팁 해당 글은 When Postgres blocks: 7 tips for dealing with locks을 보고 정리한 글입니다 1. Default 값이 있는 필드를 추가하면 안된다PostgreSQL 10버전 이하를 쓰고 있다면, Default 값이 있는 필드를 추가하면, 테이블 락이 걸릴 수 있다. 그리고 엄청 느리다. 그래서 이런 쿼리를 날리면 안된다. ALTER TABLE items ADD COLUMN updated_at timestamptz DEFAULT now(); 기본값이 없는 필드를 추가한 후, UPDATE를 날리거나 ALTER TABLE items ADD COLUMN updated_at timestamptz; UPDATE items SET updated_at = now(); 이렇게 쪼개서, ..
(PotgreSQL) ROW SHARE Lock이란? ROW SHARE Lock이란? Table Level Lock의 일종이다. Row라는 이름이 들어간다고 Row Lock이 아니다. SELECT FOR UPDATE, SELECT FOR SHARE 명령문을 날릴 때, 대상이 되는 테이블에 락을 잡는다. UPDATE, DELETE 명령문을 날릴 때, RowShareLock이 잡히는 경우도 있다. UPDATE / DELETE 명령문을 날릴 때, RowShareLock이 잡히는 케이스는 다음과 같다. aurthor의 id를 참조하고 있는 content 테이블이 있다고 가정해보자. CREATE TABLE authors ( id serial NOT NULL PRIMARY KEY, name text NOT NULL ); CREATE TABLE contents ( id..