이 포스팅은, 서버/인프라를 지탱하는 기술을 읽고 진행하는 스터디의 내용을 정리하였습니다. DB서버가 정지할 경우로는 크게, mysqld가 비정상 종료함 디스크가 가득참 디스크가 고장남 서버 전원이 고장남 이 중 H/W가 고장난 경우에는 RAID나 다중화 구성이더라도 단시간에 데이터를 복구하기까지 시간 소요가 크다. 이에 실시간으로 복제하는 Replication이 필요하다. MySQL Replication의 master/slave는 1:n관계이다. master는 갱신과 참조 쿼리를 받아들여 바이너리 로그파일로 기록한다. 이 로그파일의 내용이 slave로 전송되고 순차적으로 실행함으로써 복제된다. 즉, 데이터조작쿼리(INSERT, UPDATE, DELETE)는 마스터로, 데이터조회쿼리(SELECT)는 슬레..
이 포스팅은, 서버/인프라를 지탱하는 기술을 읽고 진행하는 스터디의 내용을 정리하였습니다. 왜 리버스 프락시를 도입해야 하는가? Reverse Proxy란, Reverse Proxy는 클라이언트로부터의 요청을 받아서(필요하다면 주위에서 처리한 후) 적절한 웹 서버로 요청을 전송한다. 웹 서버는 요청을 받아서 평소처럼 처리를 하지만, 응답은 클라이언트로 보내지 않고 Reverse Proxy로 반환한다. 요청을 받은 Reverse Proxy는 그 응답을 클라이언트로 반환한다. 통상의 프락시 서버는 LAN -> WAN의 요청을 대리로 수행하지만 Reverse Proxy는 WAN -> LAN의 요청을 대리한다. 클라이언트로부터의 요청이 웹서버로 전달되는 도중의 처리에 끼어들어서 다양한 전후처리를 시행할 수가 있..
이 포스팅은, 서버/인프라를 지탱하는 기술을 읽고 진행하는 스터디의 내용을 정리하였습니다. 다중화란? - 다중화란, 장애가 발생해도 예비 운용장비로 시스템의 기능을 계속할 수 있도록 하는 것을 말한다. 다중화의 대상은 Server, Load balancer, Network Device 등이 있을 수 있다. 단일장애점(SPOF)을 없애고 무중단/고가용성 서비스를 위해 다중화가 필요하다. OnPremise환경에서의 다중화 관점1) 장애를 상정한다.2) 장애에 대비해서 예비 운용장비를 준비한다.3) 장애가 발생했을 때 예비 운용장비로 교체할 수 있는 운용체제를 정비한다.- 유휴장비 역시 비용이므로 ROI에 따라 다중화 수준을 정한다. HealthCheckICMP/Port/HTTP 등을 요청하여 응답여부 체크p..
이 포스팅은 오리뎅이님의 야학(?)을 정리한 내용입니다. 병목구간(bottleneck)이란, 인터넷을 이용하는 Client와 인터넷 Server 사이에 존재하는 네트워크 구간 중 가장 bandwidth가 작은 구간을 말한다. 인터넷 초창기엔 서버의 media speed/스위치나 라우터의 interface/home edge단 link가 모두 100Mbps(Fast Ethernet)이었기에 병목구간이 큰 문제로 부각되지 않았다. 하지만 Gigabit ethernet이 나오면서 상황이 달라졌다. 이전에는 64Kbyte의 window size로 충분히 성능을 낼 수 있었지만, 이후 인터넷 속도가 올라감에 따라 window size를 올릴 수 밖에 없었기 때문이다. (RFC 1323) 서버의 media speed..
범준님께서 전체 메일을 보내셨다. 링크된 글을 읽고 든 단상을 남겨본다. 1. 실패는 봐줘도 무능함을 봐주면 안돼 "혁신이 불확실성과 미지의 영역을 탐구하는 일이라는 점을 감안하면 실패를 용인하는 것이 혁신적 문화의 중요한 요소라는 건 당연해 보인다. ... 평범한 기술, 엉성한 사고, 나쁜 업무습관, 부족한 관리능력 등이 문제가 돼서는 안된다." 우리는 저마다의 중력감을 가지고 살아간다. 그리고 각자의 속도에 비례하여 항력을 온몸으로 받아낸다. 이를 대하는 자세에 따라 각기 삶의 방향이 달라진다. 비상하는 여정일지라도 추락은 수반된다. 하지만 그것이 단순히 미숙함때문이라면, 삶을 지탱하는 근력을 키워야 하지 않을까.. 2. 실험은 과감하게, 규율은 엄격하게 "규율이 없으면 사실상 모든 행위가 실험이란 ..
Elasticsearch은 어떤 구조로 검색하는가?(하기 내용은 '실전비급 아파치 루씬 7' 저자들이 진행한 스터디 내용을 정리한 것입니다.) 검색엔진으로 시작했지만, 더이상 검색엔진으로만 사용되지 않고, 분산시스템이라는 목적이 크다. 검색엔진이 비정형 데이터를 검색하는 과정은 크게,문서 수집 -> 문서 정제 -> 문서 데이터 색인 -> 문서 검색 순으로 이루어진다.- 문서 수집 : 검색하려는 대상을 수집한다.- 문서 정제 : 수집된 비정형 문서를 정형 데이터로 정제하고 가공한다.- 문서 데이터 색인 : 정제된 문서를 빠르게 검색 가능한 구조로 저장한다.- 문서 검색 : 문서 정보에서 검색어를 찾는다. Elasticsearch는 Lucene에 인터페이스를 입혀서 런타임, 분산검색, 데이터제공 등을 하므로..
'대안이 없으면 얘기도 못하는가'아차, 싶었다.여전히 차분한 대화였지만 미묘하게 감정선이 흔들리고 있었다. 문득 궁금해졌다.이미 모두 인지하고 있고 이에 대해 충분한 시간을 두어 논의하였음에도, 그리고 그 선택이 현실적인 부분이 고려된 차선책임을 앎에도, 홍보 시작 1주일 전인 이제와서야 이야기하는 이유가 무엇인가. 설마 혼자 이를 인지하고 있다는 교만일까. 최근의 나는 문제의식에 집중하기보다는, 대안을 모색하고 실천하는 것이 더 합리적이라 생각했다.그간 프로문제러들과의 소모적인 논쟁에 지쳤기 때문일지도 모르겠다.여전히 이러한 사고를 수정할 마음은 들지 않았다. 그저 아차 싶었던 것은, 갈등 유발이 (가치판단의 차이라기보다는) 내 표현 방식으로 생겨났기 때문이다. 그에게 사과를 했고 그 역시 사과를 했다..
해당 글은 구글 스터디잼 Kubernetes in the Google Cloud를 통해 경험한 내용을 바탕으로 합니다.해당 과정의 Link는 https://run.qwiklabs.com/quests/29 3주간의 kubernetes 체험기 마지막날이다. 이번주엔 Build a Slack Bot with Node.js on kube, private kube cluster, helm package manager, NGINX ingress controller까지 경험하며 사실상 입문 과정을 마무리하였다. 동시에 쿠버네티스 내부 파트를 집중적으로 책을 읽었다. 뒤늦게 조대협님의 블로그를 접했는데, 먼저 읽고 시작했으면 어땠을까싶다. 쿠버네티스를 이해하는데에 있어 실습과정을 따르면서, pods/service/de..
해당 글은 구글 스터디잼 Kubernetes in the Google Cloud를 통해 경험한 내용을 바탕으로 합니다. 해당 과정의 Link는 https://run.qwiklabs.com/quests/29 이번 스터디 잼을 통해 Kubernetes를 이용하여 Blue-Green/Canary 배포를 해보고, Jenkins/MongoDB 등을 연동해보았다. 다만, Kubernetes가 기존의 아키텍처를 추상화하였기에, Infrastructure as a Code를 구현할 수 있다는 체험을 했을 뿐이다. 각 명령어가 담고 있는 의미를 재해석하는 노력은 사용자 측면에서는 유의미할 수 있으나, 엔지니어 시점에서 다소 아쉬움이 남는다. 그래서 이번 포스팅을 하며 쓰고 지우기를 반복했다. 이번 포스팅에서는 지난주에 ..
해당 글은 구글 스터디잼 Kubernetes in the Google Cloud를 통해 경험한 내용을 바탕으로 합니다. 해당 과정의 Link는 https://run.qwiklabs.com/quests/29 Kubernetes란 무엇일까? (https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/) - Kubernetes는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼이다. Kubernetes에 대한 첫 인상은, - 컨테이너 기반이므로, VM 이미지를 사용하는 방식보다 이미지 생성이 쉽고 효율적이겠다. (지난 공감세미나에서 보았듯이, Container를 활용하면 Cold booting을 없앨 수 있다..