스타트업/개발팀38 인스타그램 다운 장애, 왜 일어났을까? 아침에 인스타그램 다운으로 시끄러웠다.웹에서 500 error 가 뜬다고 난리였다.웹어플리케이션 서버가 DB 와 통신할 수 없을 때 나는 에러다.에러값을 리턴했다는 건 웹어플리케이션 서버는 살아있었다는 뜻이다. 그런데 왜, 언제부터 500 error 가 떴을까?추측해보았다. 장애현상 장애가 나면 다양한 형태로 개발팀에 보고가 접수된다.앱, 웹의 장애비율은 실사용자수에 기인한 것이다.대부분 앱사용자니까 앱쪽 보고가 많은 건 당연하다. 다만, 웹사이트 장애가 함께 올라오는 건 전체 다운(Down)으로 보는 게 맞다.웹쪽 보고서에 500 error 가 있었다. 언제 장애가 일어났을까? 인스타그램이 트위터 공식계정에 이슈를 올린 건 10:46분. 한국시간이다. 인스타그램이 조치가 완료되었다고 올린 게 11:07.. 2019. 1. 29. Java GC time 어떻게 할까? Garbage Collection.C/C++은 객체를 선언하면, 명시적으로 Destroy 시켜줘야 한다.그렇지 않으면 메모리를 할당한 채로 운영되다가, Out Of Memory 에러를 띄운다. 하지만 Java 는 명시적으로 Destroy 시켜주지 않아도 된다.Java VM 이 자동으로 Destroy 시켜주기 때문이다.물론 실시간으로 하는 건 아니고, 일정 시간을 두고 모아서 없앤다.쓰레기 수집하는 것과 비슷해서 Garbage Collection 이라고 부른다. 문제는 이 기간 동안 Java VM 은 인입된 트래픽을 정지시켜 놓는다.이게 순식간에 지나가면 문제가 없는데, 어떤 때는 5~6초를 넘어간다.하드디스크 상의 SWAP Memory를 지우면서 I/O Bottle Neck 이 걸리는 거다.SSD라면 상.. 2019. 1. 17. MySQL 테이블 크기 알아내기 물리적 크기를 알아내는 건 DB구조 파악의 첫번째 지름길.어제 크기와 오늘 크기를 알아내어 증가분을 비교한다.물리적 크기가 큰데 분산이 안되어 있다면, 어떻게 분산 배치할지 고민해야 한다. DB 스키마 내에 있는 각 테이블의 물리적 구조 조회하기 select * from information_schema.TABLESwhere table_schema = 'DB_NAME'; 그 중에서 각 테이블의 물리적 크기 조회하기 SELECT TABLE_NAME AS 'Tables', round(((data_length) / 1024 / 1024), 2) 'Data size(MB)',round(((index_length) / 1024 / 1024), 2) 'Index size(MB)'FROM information_sch.. 2019. 1. 3. 디지털오션, 가벼운 클라우드 서버로 추천함. 클라우드 서버.글로벌 서비스를 하려면 두말 없이 AWS 나 구글 것을 써야 한다.다른 서버는 CDN(Contents Delivery Network)이 마땅치 않기 때문이다.동영상이나 고화질 이미지를 생각한다면, CDN은 서비스 성장기에 있어 필수요소이다. 하지만, 파일럿용으로 쓰거나 교육용으로 쓰기에는 조금 비싸다.무료로 쓰고 있다면 당연히 그걸 쓰겠지만, 그런 게 없다면 이 서비스를 생각해볼만 하다.5 달러짜리 요금제가 있기 때문이다. 재미난 건 시간당으로 사용할 수도 있다. 제일 저렴한 경우 시간당 0.007달러 = 8원 정도 되니까, 하루에 192원이다.잠깐 테스트용으로 사용하기엔 최고다.아직 Linux 서버만 제공하고, MS Windows는 제공되고 있지 않다. 참고로, digitalocean 은.. 2018. 12. 14. 망한 프로젝트, 되살릴 수 있을까? 망가진 프로젝트에 소방수로 자주 투입되었다.분야가 모두 달랐는데 망한 이유는 거의 판박이처럼 닮아 있었다.몇 번 정리하고 나니 수습능력과 보는 눈이 생겼다.그걸 정리해 보았다. 망한 프로젝트를 들어가면, 개발자가 다 도망가고 없다.도망간 개발자를 좇아가서 만나보면 대부분 비슷한 말을 한다.사람이야기다. 고객과의 갈등, 팀장과의 불화, 살인적인 일정 등등.말이 안통한다는 거다. 하지만, 사람 이야기는 복잡하다.그래서 기술 이야기부터 해보자. 01. 화재현장 둘러보기망한 프로젝트는 현황진단을 사람말로 하지 않는다.갈등이 섞여 있기 때문이다. 그래서, 시스템과 코드로 확인해야 한다.아래 이야기는 코드나 터미널 열어서 확인하는 거다. 진도. 데이터를 본다. 제일 먼저 데이터를 확인한다.어떤 데이터가 쌓여 있는지.. 2018. 8. 10. DB란 무엇인가? "DB가 뭐예요?"몰라서 묻는 게 아니다. 아니 사실 몰라서 묻는 거다. DB가 뭘까? 자료구조론에서 배우는 그건가? 왜 배우지? 다들 SQL, 테이블을 말하지만 그게 왜 쓰이는지 말해주는 사람이 없다. 초보자는 답답하다. 그래서 정리해 보았다. 1. 도대체 DB가 뭐예요? DB는 두가지 의미로 불린다. 하나는 DB 어플리케이션이다. 둘째는 데이터 그 자체이다. 혼용해서 부르기 때문에 알아서 들어야 한다.참고로 어플리케이션이란, PC 프로그램 같은 걸 통털어서 부르는 말이다.유래가 있는데 여기선 넘어가자. 전자는 데이터를 관리하는 전용 어플리케이션이다. 제품으로는 "오라클"이나 "MySQL"이 있다. 설치를 위해 Disk 상에 물리적인 공간을 필요로 한다. "안드로이드 앱 개발할 때는 필요없는데요?"그래.. 2018. 7. 12. 어떤 개발자와 일할 것인가? 누구를 만날 것인가? 갑자기 차에서 이상한 소리가 난다. 최근에 내가 이상한 델 다녀온적이 있나? 기억나지 않는다. 잘 모르니 근처 정비업체로 차를 몰고 가 본다. #A정비사 이것 저것 문제를 잔뜩 이야기한다. 알았어요. 고쳐주세요. 며칠 후에 차를 찾으러 갔더니, 여기 저기가 다 뜯어져 있다. 그리고, 한다는 말이 "엔진에 문제가 있어요. 엔진을 내려봐야 할 것 같아요." 그 의미는 진짜 원인은 아직 못찾았다는 것. 화가 머리끝까지 치민다. #B정비사 이 아저씨는 조곤조곤 이야기를 한다. 역시 이런 저런 문제 가능성을 이야기한다. 그런데, 자세한 건 확인을 해봐야 안다고 이야기한다. 어, 좀 다르네? 실제로 일이 커질 때는 주인에게 전화를 걸어 미리 확인을 한다. "엔진을 뜯어야 할 것 같은데, 그러면.. 2018. 7. 9. 로우 코드 프로그래밍, 결코 싸지 않다. 아래 기사를 읽고 한 번 짚어둘 필요가 있겠다 싶었다.Low coding 열풍이 불고난 후 시장에 경험이 축적되었다. "관련기사들" - 클릭몇번으로 앱만든다? 로우코드의 가능성과 한계(ciokorea, 2018.3. 5) - IT월드용어풀이::로우코드(itworld, 2017.11.30) 개인적으로는 미디어가 말하는 기술판타지를 좋아하지 않는다.이거 따라 다니다 가랑이가 찢어지는 회사가 많기 때문이다. 하지만 현실적으로는 어쩔 수 없다고 생각한다.어쨌든 투자가 줄을 잇기 때문이다.일반인을 기술논리만으로 납득시켜주기란 어렵다. Low code programming.코딩을 하지 않고, 레고 조립하듯이 프로그램 하는 걸 말한다.프로그래밍 언어를 배울 필요 없이 앱을 만들 수 있다니 굉장히 환상적으로 들린다. .. 2018. 4. 2. 마케팅 광고시스템을 만들어볼까? 이 글은 광고시스템을 만들려는 초보창업가, 초보개발자 대상이다. 광고인프라에 대한 지식이 1도 없는 사람들을 위한 글이다. 레벨 제로짜리 개론 정도 된다. 레벨 50짜리 고수들에 눈이 팔려서 삽질하던 경험이다. 사실 아무도 레벨 제로를 말해주지 않아서 삼천포로 참 많이 빠졌다. 나랑 비슷한 사람들이 없었으면 좋겠다. 이 그림은 AISMedia 라는 디지털마케팅 회사가 그린 그림이다. 사람들의 선호앱이나 기술에 따라 마케팅도 다양해진다.그래서 결국엔 AISMedia를 찾아주세요. 이런 뜻이다. 그런데 이 그림을 보고 숨겨진 개발이야기를 하고 싶어졌다. 마케팅시스템. 사람들이 왜 이용할까?우리는 편의점에 들르고, 스마트폰을 보고, 노트북을 본다. 주말에는 마트를 간다. 디지털 마케팅이란 이런 곳에서 보는 모.. 2018. 2. 8. 이전 1 2 3 4 5 다음 반응형