본문 바로가기

분류 전체보기

위르헌 아펄로 -Management 3.0 9. 제약 조건을 정렬하는 방법 여러분의 목표와 팀의 목표를 절충하자 팀과 목표가 부딪히면 그걸 해결해야 할 것이다. 팀의 결정을 무시하면 매우 갚기 어려운 동기 부채가 생길 것이고, 그건 상황을 더욱 어렵게 만들 뿐이다. 권한 경계 목록을 만들자 권한 경계 목록을 만들면 사람들이 전기 철조망에 뛰어들지 않아도 되기 때문에 사람들에게 동기를 부여하고 생산성을 유지할 수 있다. 10. 규칙을 만드는 기술 애자일의 맹점 애자일 선언의 애자일은 팀이 훌륭할 때만 훌륭하다. 애자일 선언이 역량 문제를 해결해주지는 않는다. 프로젝트의 치사율을 낮추고 싶은 애자일 관리자라면 아래의 기본 원칙을 응용할 수 있다. 문화 : 사회 시스템의 역량을 높이기 위해 어떤 방법을 적용하든, 결국 모든 것은 사람이 진심으로 관심이..
(PostgreSQL) 쿼리 실행계획 비쥬얼라이징하기 1. PgAdmin에서 실행계획 비쥬얼라이징하기PgAdmin에서 질의 쿼리 앞에 EXPLAIN (ANALYZE, COSTS, VERBOSE, BUFFERS, FORMAT JSON) 쿼리를 추가해주면, 손쉽게 쿼리 실행계획을 비쥬얼라이징해서 볼 수 있다. PgAdmin QueryTool > Explain Tab에서 결과를 확인할 수 있다. Index, Join 방식 등도 비쥬얼라이징해주기 때문에, 복잡한 실행결과를 한눈에 파악하는 데에 도움이 된다. 이런식으로! (참고 - READING PGADMIN GRAPHICAL EXPLAIN PLANS) 2. tatiyants > Pev에서 실행계획 비쥬얼라이징하기tatiyants의 PEV를 사용하면, 온라인에서 실행결과를 비쥬얼라이징할 수 있다.PEV 링크 EXP..
(saleor) 가독성 좋은 함수명 만들 때 유용한 팁 모음집 이 글은 Django E-commerce OpenSource인 Saleor에서 얻은 팁들을 정리한 문서입니다. 1. 값을 증분할 때는 increase / decrease 동사를 prefix으로 붙인다.def increase_voucher_usage(voucher): voucher.used = F('used') + 1 voucher.save(update_fields=['used']) def decrease_voucher_usage(voucher): voucher.used = F('used') - 1 voucher.save(update_fields=['used']) 2. 상태를 확인할 때에는 is 동사를 prefix으로 붙인다. def is_category_on_sale(category, sale): """..
(PostgreSQL) 테이블에 제약사항이 있는 컬럼 추가하기 Postgresql 테이블에 컬럼을 추가하는 작업은 신중하게 처리해야한다. 사이즈가 큰 테이블에 기본값이 있거나, 제약사항이 있는 컬럼을 추가하는 작업은 리스크가 있기 때문이다. 이번 포스트에서는 제약사항이 있는 컬럼을 추가할 때 발생하는 리스크와 이를 분산시키는 방법에 대해서 정리해보고자 한다. PostrgreSQL 컬럼 추가 동작 방식 ALTER ADD COLUMN 명령문을 실행하면, PostgreSQL은 아래와 같은 순서로 테이블을 변경한다. 1. 컬럼 추가하기 2. 신규 컬럼에 default 값 추가하기 ( Option ) 3. 컬럼 제약사항 ( constraint ) 확인하기 PostgreSQL은 3번째 단계에서, 값의 유효성을 확인하기 위해 테이블을 풀스캔한다. 이 때, 테이블 사이즈가 크다면..
(PostgreSQL) JSON VS JSONB RDB에 JSON 포맷을 저장할 때, 평소처럼 텍스트 포맷으로 저장할지, JSON Format을 적용할지 고민하게 된다. 뫼비우스의 띠 같은 삶을 사는 나는 딱 1년전에도 비슷한 고민을 했었다.( 작년에 조사한 글 : 👉 [MariaDB]RDB 속에서 NOSQL 사용하기 👈)작년에는 리서치만 해보고 말았는데, 올해에는 PostgreSQL에 JSON 타입을 실제로 적용해봐야겠다. 🐜🐜🐜고럼 이만 포스팅 시작~ ㅎ.ㅎ PostgreSQL의 JSON 타입은 크게 2가지이다. JSON, JSONB 두가지 유형이다. JSON Type은 9.4 버전부터 추가되었다. 공통점둘다 JSON 포맷 유효성체크를 한다. 차이점데이터 저장 방식JSON은 들어온 그대로 값을 저장한다. 그런데 JSONB는 그대로 저장하지 않는다...
(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 트랜잭션이 느린 경우, Lock ..
(온라인스터디) TELECONSOLE + teletype Atom 온라인 오픈소스 스터디할 때, 행아웃으로 화면공유를 하니까 잘 안보였다.그래서 터미널을 공유할 수 있는 프로그램인 TELECONSOLE과, ATOM 화면을 공유할 수 있는 teletype Atom을 써봤었는데, 신세계였다. 😻온라인으로 협업할 일이 있으면, 요 두개를 가져다 쓰면 완전 좋다. TELECONSOLE teletype Atom 텔레타입 아톰은 Host Atom에 게스트 Atom이 접속하는 개념인데, 읽기 권한만 있는 구글 드라이브 문서를 보듯.. 아톰 화면을 볼 수 있다.
<사이트 신뢰성 엔지니어링> - 2부 요약 본문 중에서...Chapter 6. 분산 시스템 모니터링 알럿 호출 방식 철학매번 호출기가 울릴 때마다 긴급한 상황임을 인지하고 그에 대응할 수 있어야 한다. 이러한 긴급 호출은 빈번한 호출로 인한 피로를 느끼지 않도록 하루에 단 몇번 정도만 발생해야 한다.모든 호출은 대응이 가능해야한다.호출은 새로운 문제나 지금까지 보지 못한 사건에 대한 것이어야 한다.호출에 대한 모든 대응은 이성적이어야 한다. 장기적 모니터링 장애 호출에 대해 이미 정해진 규칙에 의해 대응하는 것은 위험 신호다. 팀의 그 누구도 이런 호출에 대해 자동화를 할 의지가 없다는 것은 팀이 스스로 만든 기술 부채를 해소할 자신이 없다는 것을 암시한다. 한 걸음 더 나아가기 순수한 노력의 힘은 너덜너덜한 시스템을 고가용성을 갖춘 시스템으로 ..