데이터이야기

DB 노하우, 데이터직무, 다양한 인터뷰를 만나보세요.

단무지 시즌 IV: 단무지의 DB 운영 이야기 : 데이터 아키텍트 단무지, 아수라장에 홀로 떨어지다!!!

데이터 이야기
작성자
dataonair
작성일
2016-06-08 00:00
조회
4953


단무지 시즌 IV: 단무지의 DB 운영 이야기

데이터 아키텍트 단무지, 아수라장에 홀로 떨어지다!!!



[필자] 서윤식은 외환신용카드에서 DBA, 현대하이카다이렉트에서 DA로 일했다. 현재 데이터와사람들 대표이자 KODB 산업체 전문 강사로서 데이터 모델링 및 SQL 튜닝 강의 등 활발한 활동을 하고 있다. ysseo0007@naver.com



들어가면서

독자 여러분 반갑습니다. 단무지 이야기 시즌 4를 시작합니다. 시즌 1 ‘단무지 대리의 성공시대’는 처음 DBA를 하는 사람이 실력 있는 DBA로 성장할 수 있는 단계를 다뤘습니다. 그리고 시즌 2는 대학생이 DBA를 접하는 단계인 ‘단무지 대학생의 DASP 도전기’였고요. 시즌 3는 프로젝트 이야기였습니다.

이제 시즌 4는 기업의 DA(data architect)가 DB 운영을 위해 다뤄야 하는 단계를 작성해 볼까 합니다. 많은 운영 DBA들이 DB Operator로 남아 있습니다. DB Operator란, DB Stop/Startup 및 사용자 테이블스페이스를 늘려주고, 단순한 DB 파일관리 정도를 하는 DBA들입니다. 이러한 DBA들이 고품질의 DB 유지 관리와 DBA들의 기술 향상을 위한 방향성을 제시해 보려 합니다. 지금까지 그러했듯이 시즌 4도 많이 사랑해 주셨으면 고맙겠습니다. 여러분께 많은 성원을 부탁드리며 시즌 4를 시작해 봅니다.



단무지의 호 시절

포탄이 여기저기서 터진다. 기관총이 어디서인지 모르게 불을 뿜어대고 있다. 단무지는 자기 소대원의 희생을 최소화하고, 703 고지를 점령하기 위해 이리저리 뛰어 다니고 있다. 하지만 고지 위에서 빗발치는 기관총과 포탄이 단무지의 혼을 빼 내고 있는 듯 하다. 1분대 좌측편으로 돌격하고, 2분대는 특공조를 조직해서 적의 기관총을 봉쇄해봐. 저놈의 기관총이 우리 소대를 다 잡아먹을 것 같아. 3, 4분대는 나와 함께 중앙을 피해 우측으로 돌격!! 단무지는 정신 없이 앞으로 돌격하고 있다. 숨이 턱까지 차오른다. 저 멀리 고지 위의 적군 몇몇이 우리 포격에 의해 쓰러지는 것이 보인다. 그리고 좌측에서 돌진하고 있는 1분대 김 상병이 총알을 맞고 쓰러지는 것이 감지된다. 또다시 1분대 이 일병이 쓰러진다. 2분대 어디 쳐박혀 있는 거야 기관총은 잡고 있는 거야 단무지는 쓴 입맛을 다시며, 계속 돌진한다. 하지만 적의 기관총이 건재한 이상 더 이상 돌격은 무리라는 생각이 든다. 그렇다고 후퇴하겠다고 무전을 쳐 봐야 중대장이 허락하지 않을 것은 불을 보듯 뻔한 일이었다. 어찌해야 할까 단무지는 돌격을 잠시 중단하고 전 소대원을 엄폐할 곳을 찾아 대기할 것을 지시했다. 이거 진퇴양난이군. 부하들을 다 죽이고 이 놈의 고지를 점령해 봤자 무슨 의미가 있단 말인가 도대체 어떤 놈이 군인은 명령에 죽고 산다고 했단 말인가 그 놈을 잡아다 먼저 이 고지를 점령하라 해야 할 것 같았다. 그 즈음 2분대에서 우측을 멀리 돌아 적의 후미로 접근해 괴물과도 같은 기관총을 드디어 잠재웠다. 이제 됐다. 전 소대 돌격 앞으로… 단무지는 명령을 내렸다. 이대로 10여분 만 몰아치면 고지를 점령할 수 있을 것 같았다.

그런데 갑자기 음악소리가 요란하다. 적진에서 심리전으로 사용하고 있는 음악소리가 아닌가 하고 단무지는 잠시 생각해 보았으나, 격전 중에는 심리전을 하지는 않는다. 이상하다. 하지만 점점 소리는 더 가까이 생생하게 들린다. 단무지는 음악 소리에 신경 쓸 여유가 없었다. 고지가 얼마 안 남았다. 마지막까지 힘을 내라. ‘자, 돌격 앞으로~~~’라는 소리와 함께 단무지는 벌떡 일어나 눈을 떴다. 옆에서는 휴대폰이 알람 소리를 요란하게 내 뿜고 있었다. 아~~~ 꿈이었구나 별 신기한 꿈을 다 꾸는 구나. 요즘 술을 좀 많이 마셔서 기력이 쇠했나 보약이라도 한재 먹어야 하나 라는 생각을 하며, 자리에서 일어나 간단히 샤워를 하고 식사를 마친 후, 출근을 위해 집에서 나왔다. 출근 길 지하철에서 단무지는 잠시 요즘 근황을 떠올려 본다. DA 팀장으로 과거 3년간 DA팀을 안정시켜 놓고 나서 최근 무기력증에 빠져있다. 너무도 같은 일상의 되풀이 이다. 특이할 것 없는 회사 업무로 인해 너무도 나태해져 있는 것 같다. 다시 마음을 가다듬고 뭔가를 새로 시작해야 할 것 같은데.

출근 후 일일 점검 결재를 마치고, 잠시 커피 한 잔을 마시고 있다. 책상 앞에 앉아 아~~~ 오늘도 특별이 할 일이 없다고 생각했다. 단무지 책상 우측에 떠~~억 하니 자리잡고 있는 DB 모니터링용 PC는 조용하기 그지 없다. CPU 사용량은 30% 즈음에서 움직인다. v$session_wait을 통해 문제되는 트랜잭션을 모니터링 하고 있는 부분은 특이한 이벤트가 없다. v$sysstat를 통해 모니터링하는 enqueue waits, execution, user commit, parse count, physical reads, session logical reads, redo size, redo writes 모두 평상시 수치 그대로다. v$system_event에서 보는 buffer busy wait, db buffer cache latch, db file scattered read, db file sequential read, direct path read direct path write, library cache latch, pin, lock 모두 정상 수치다. v$session을 통해 보는 Active session, total session 수치 모두 정상이다. 각 DB 서버 내용을 한 곳에 집중시켜 놓고, 평균 수치 이상일 경우 경고를 띄우게 해 놨으나, 너무도 평이한 수치이다. 그 동안 이 잡듯이 튜닝을 해 댔으니 특이한 것이 발생할래야 할 수 없는 상황이다. 모니터링 PC를 보고 나서 [오라클 성능 고도화 원리와 해법] 책이나 다시 한번 떠 들러 봐야겠다고 단무지는 생각했다. 이 책만 벌써 15번째 읽고 있다.



인사발령

이때 냉정해 부장이 단무지를 찾는다고 했다. 냉정해는 실력을 인정받아 다른 동기들 보다 먼저 부장 진급을 했으며, 단무지가 근무하는 ITㅍ개발부 부장으로 있었다. 부장실로 들어가 단무지는 냉정해 부장에게 인사를 했다.



단무지: 안녕하세요, 부장님. 찾으셨다고 들었습니다.냉정해: 어~~ 단 팀장, 앉아.단무지는 소파에 앉았다. 냉정해는 손수 차를 내려서 단무지에게 권했다. 냉정해: 나는 요즘 이 차 맛에 푹 빠져 있어. 실무 팀장 때는 이것 저것 챙겨야 할 것이 많았는데,
요즘은 심심해서 죽을 맛이야. 그래서 여기 저기 세미나도 다녀보고, 책도 사서 읽고 있는데,
다른 모든 것보다, 이 차 맛으로 하루를 보내. 하하 자네는 어떤가단무지: 하하. 부장님. 좋아 보이십니다. 사실 저도 뭐 특이한 것이 없어서요.
무슨 프로젝트 있으면 거기나 보내 주십시요. 몸이 근질 근질 합니다.냉정해: 그렇지 하하 내가봐도 자네는 좀 역동적인 면이 있어서 조용한 것은 싫어하는 것 같아.
그래서 말인데. 최근 우리 지주사에서 온라인 보험사를 시작 한 것 알고있지단무지: 네 잘 알고 있습니다. 그것은 3개월 전 오픈한 것으로 알고 있는데요.냉정해: 맞아. 그런데 말야. 그곳 DB가 문제가 있나 봐. 외부에서 경력직으로 대부분의 직원을 채용했는데,
쓸만한 DBA를 찾지 못했나봐. 이번 달에만도 3번의 DB 장애가 있었다는구만.
그래서 우리 쪽 DB 팀장급이 1명 내려가야 할 것 같은데. 내가 생각하기에는 아무래도
자네가 적임자라고 생각하는데. 자네 생각은 어떤가단무지: 아~~ 정말 구미가 당깁니다. 가면 많은 것을 해 볼 수가 있겠네요. 하지만~~~냉정해: 하하… 급여 및 복지는 우리 회사와 비슷할 거야. 그리고 자네가 간다면 1호봉 올려서
보내 주기로 인사부와 협상해 놓았어. 자회사 IT 부장이 내 동기인데 말야.
3년 내에 다시 우리 회사로 올라올 거야. 그렇다면 3년 후면 자네도 부서장으로 갈 수 있으니,
미래에 대한 비전도 있고. 나쁘지 않은 기회라 생각되는데. 자네 생각은 어때단무지: 아~~ 네. 알겠습니다. 그러면 제가 가서 DB는 이것 저것 안정시켜 놓을 자신이 있습니다.
그런데 발령 일자는 언제입니까냉정해: 다음주 월요일이야. 정확히 일주일 남았어. 준비해.단무지: 아~~ 네. 알겠습니다. 준비하도록 하겠습니다.



새로운 조직의 적응

단무지는 새로운 곳에 첫 출근을 했다. 지난 주에 근무하던 잘나가 은행의 상사 및 동료들과 인사를 마쳤다. 그리고 새로 부임할 곳의 임원 및 부서장에게 사전 인사를 마쳤다. 새로운 회사는 온라인으로 보험을 판매하는 잘나가다이렉트손해보험이었다. 하나의 IT부서에 IT 기획팀, 인프라를 담당하는 IT운영팀, 개발을 담당하는 IT개발팀이 있었다. 부서 하나가 마치 잘나가 은행의 IT본부와 같은 조직이었다. 단무지는 IT개발팀 팀장으로 발령 받았다. IT개발팀은 DB파트와 개발을 담당하는 상품 및 계약파트, 보상파트, 재무파트, 콜센터파트, 홈페이지 파트로 나뉘어 있으며, 인원은 30명이 근무하고 있었다.



전투 상황

단무지는 최대한 빠르게 문제점을 파악해 들어갔다. 2주간 파악한 결과 애플리케이션 분야는 좋은 프레임워크와 모니터링 툴 등이 도입되어 있으며, 은행과 같이 다양한 투자는 되어 있지 않지만, 그렇다고 크게 문제점이 있어 보이지 않았다. 앞으로 하나하나 보완해 나가면 될 것으로 보였다. 문제는 DB 였다. 이번 달만 벌써 5번의 DB 장애가 발생하였다고 했다. DB분야의 파트장은 5년차 대리였으나, DB를 잘 모르는 개발자 출신이었으며, 실무자는 사원 2년차로 DB에 대한 개념 정도만 있는 직원이었다. DB 파트장에게 장애 유형에 대한 보고를 들었다.

아카이브 로그 디렉토리 Full 장애 1회, 피크 시간대에 악성 SQL 수행에 따른 DB 멈춤 현상 3회, 임시 테이블스페이스 Full 장애 1회로 이 번달 5회 장애였으며, 오픈 이후의 장애 기록은 더 가관이었다. 사용자 테이블스페이스 Full 장애 2회, 3개의 DB간 Snapshot 연결 장애가 발생하였으나, 일주일 간 모르고 있다 뒤 늦게 양 DB간 Sync.가 맞지 않은 문제 1회, 개발자가 운영 DB에 데이터 삭제 중 삭제 대상이 아닌 데이터 삭제 등등 사유도 다양했다. 얼마 전 꿈꾸었던 703 고지 점령전투 상황이 바로 지금의 상황과 다르지 않았다. 이곳의 DB는 관리되지 않고 그냥 방치 상태라 해도 과언이 아니었다. 단무지는 먼저 백업이 정상적인지 여부와 일일점검이 가장 시급하다 생각이 들었다. DB 파트장에게 일일점검을 진행할 것과 일일점검 대상 상세 항목을 작성하라고 지시했다.



이기는 전쟁의 준비

단무지는 이 상황이 거의 전투 수준이라 생각했다. 마치 총 한 자루씩만 들고 있는 병사들과 전쟁터에 나와있는 것 같은 생각이 들었다. 이것이 전쟁이라면 이기는 전쟁을 해야겠다고 비장한 각오를 했다. 단무지가 해야 할 것을 우선 순위로 정리해 보았다.

1. 일일점검
단무지는 은행에 근무하는 동안 일일점검을 통해 장애 발생의 95% 이상을 사전에 차단했다. 이 회사에서 가장 시급한 점이 DB 일일점검이며, 일일점검을 통해 DBA들의 기초 실력을 향상시켜야 한다고 생각했다.

2. 백업의 정상 여부 점검 및 Recovery 테스트
전투에 실패한 병사는 용서해도 배식에 실패한 병사는 용서할 수 없다고 했던가 DBA 업계에서는 DB를 깨먹은 DBA는 용서를 해도, 백업을 받지 않은 DBA는 용서받을 수 없다고 했다. 또한 백업이 정상적으로 성공했다 하더라도, 실제 개발 DB를 통해 복구를 해서 DB를 살려내 봐야 정상적인 백업인지 여부를 판단할 수 있다. 주기적으로 백업된 DB를 이용해서 Recovery 하는 훈련을 수행해야 한다.

3. 개발자들의 DB 접근 제한 및 보안시스템 구축
개발자들이 무작위로 DB의 데이터를 변경한 다는 것은 DB 정합성에 치명적인 문제점이 발생할 수 있다. 애플리케이션을 통하지 않는 데이터의 변경은 최소한으로 수행해야 하며, 철저한 결재 단계를 거쳐 DBA에 의해 수행해야 한다.

또한 최근 개인정보보호 강화에 따라 보안 시스템 구축을 필수적으로 진행해야 한다. 이를 위해서도 개발자들에 의한 DB 접근 제한은 필수적이다.

4. DB 모니터링 시스템 구축
일일점검에서 95%의 장애를 예방했다면 나머지 5%의 장애 예방책은 DB 모니터링이다. DB는 장애 직전에 반드시 전조 증상을 나타낸다. 전조증상을 파악할 수 있는 것이 모니터링 시스템이다. 시장에서 판매하는 상용제품 보다는 본인이 중요하다 판단되는 항목을 모니터링 할 수 있는 시스템을 별도 개발해야겠다.

5. 메타데이터 시스템 구축
장애를 예방하고 보안을 강화했다면 DB 관리의 궁극적인 목적인 데이터 품질관리 시스템을 구축해야 한다. 데이터 품질관리 시스템 구축을 위해서는 반드시 메타데이터 시스템 구축이 필수적이다.

그리고 위의 5가지와 별도로 개발자들의 SQL 사용 향상을 위한 교육을 준비해야겠다고 생각했다. 매일 DBA가 튜닝한다면, 원인을 제거하지 못하고 상황이 발생할 때마다 대처하는 것과 같다. 우선 급한 SQL은 튜닝이 필요하지만, 개발자들을 교육시켜 개발자들이 SQL을 개발하는 단계에서 튜닝이 불필요한 고급 SQL을 개발하도록 유도해야겠다고 생각했다.

단무지는 올 1년은 위의 상황을 정리하고, 내년부터 애플리케이션 부문에 대해 점검을 하겠다는 계획을 수립했다.



에필로그

단무지 시즌 4에서는 ①일일점검, ②백업의 정상 여부 점검 및 Recovery 테스트, ③개발자들의 DB 접근 제한 및 보안시스템 구축, ④DB 모니터링 시스템 구축, ⑤메타데이터 시스템 구축에 대해 자세히 스크립트를 첨부해 가며 글을 풀어가도록 하겠습니다. 스크립트가 첨부되다 보니 내용이 많이 디테일해 질 것 같습니다. 많은 성원 부탁드립니다. (다음 회에 계속)



출처 : 한국데이터베이스진흥원

제공 : 데이터 전문가 지식포털 DBguide.net