종달랩 종다리 이야기

지금까지 작업해본 가장 거지 같은 코드가 무엇인가 .. 번역들 퍼옴.

해우소
반응형
https://m.facebook.com/groups/174499879257223?view=permalink&id=2743723129001539
출처는 페북인데 페북 싫어하시는 분을 위해 간만에 퍼옴니다.

https://news.ycombinator.com/item?id=18442941
원문은 여기입니다.

해커뉴스에 "지금까지 작업해본 가장 거지같은 코드가 무엇인가"라는 글타래가 있는데 여기에 전직 오라클 개발자가 쓴 글이 화제가 된 적이 있습니다. 너무나 대단해서 한번 번역해 보았습니다.

--
오라클 데이터베이스 12.2
2500만줄 가량의 C 코드로 이루어져 있습니다.

정말이지 상상할 수 없을 만큼 끔찍합니다! 한 줄의 코드를 고치면 수천 개의 테스트가 깨져요. 여러 세월동안 수많은 프로그래머들이 빡빡한 데드라인에 맞춰서 온갖 개똥같은 코드로 채워놨어요.

엄청 복잡한 로직, 메모리 관리, 컨텍스트 스위칭 등등이 수천개의 플래그로 엮여 있습니다. 코드 전체가 손으로 일일히 하나씩 하나씩 펼쳐보지 않고서는 파악이 불가능한 매크로로 뒤덮여 있어요. 매크로 한개가 실제로 무슨 역할을 하는지 이해하기 위해서는 하루에서 이틀까지 걸릴 수 있습니다.

가끔씩 코드가 서로 다른 상황에서 어떻게 동작하는지 이해하려면 20개의 서로 다른 플래그와 관련된 값들을 이해해야 해요. 가끔씩은 수백개까지 가기도 해요! 절대로 과장하는게 아닙니다.

이 제품이 아직까지 살아남아서 굴러가는 유일한 이유는 말 그대로 수백만 개의 테스트 때문이에요!

오라클 데이터베이스 개발자의 하루는 대략 이렇습니다.

- 새로 발견된 버그를 수정하기 시작합니다.

- 20개의 서로 다른 플래그들이 어떻게 미스테리하게 버그를 유발하는지 조사하느라 2주를 보냅니다.

- 특수한 시나리오에 대응하기 위해 하나의 플래그를 더 만듭니다. 문제가 되는 상황을 비켜나가서 버그를 피하도록 플래그를 검사하는 코드를 몇줄 더 짭니다.

- 수정사항을 테스트 팜에 보냅니다. 테스트 팜은 100~200개의 서버로 이루어져 있는데 코드를 컴파일하고 새 오라클 DB를 빌드한 다음에 수백만개의 테스트를 분산시켜서 돌립니다.

- 집에 갑니다. 다음 날 다른 걸 합니다. 테스트는 완료되는데 20~30시간 가까이 걸리기 때문입니다.

- 집에 갑니다. 다음 날 테스트 결과를 확인합니다. 운이 좋은 날에는 테스트가 100개 정도 실패합니다. 나쁜 날에는 1000개 정도가 실패합니다. 이중 몇 개를 골라서 내가 무엇을 잘못했을지 고찰합니다. 아마 이 버그의 실체를 이해하려면 10개의 플래그가 더 필요할 수도 있겠네요.

- 이 이슈를 해결하기 위해 플래그를 몇개 더 만듭니다. 수정사항을 제출하고 테스트를 돌립니다. 20~30 시간을 더 기다립니다.

- 이 플래그들이 맞아떨어지는 마법의 주문을 찾을 때까지 계속 반복합니다.

- 마침내 어느날 테스트가 모두 성공합니다.

- 다른 개발자들이 이 코드를 건드려서 당신이 고친 것을 다시 망가뜨리지 않도록 수백개의 테스트를 더 작성합니다.

- 당신이 작업한 코드에 최종 테스트를 한번 더 돌립니다. 그리고 코드 리뷰를 맡깁니다. 리뷰하는데는 2주가 걸릴 수도 있고 2달이 걸릴 수도 있습니다. 그러니까 그 동안에는 새로운 버그를 잡으러 가세요.

- 2주 또는 2달이 지나고 모든 것이 끝나면 마침내 코드는 메인 브랜치로 머지됩니다.

여기까지 오라클에서 프로그래머가 버그를 잡는 과정을 절대 과장없이 말씀드렸습니다. 새로운 기능을 추가하는건 어떨지 상상해보세요. 작은 기능 하나 개발하는데 6개월에서 1년까지 (때론 2년까지) 걸립니다. (예를 들면 AD 인증 기능을 추가한다거나)

이 물건이 돌아간다는 것은 그야말로 기적이라는 말이라고밖에 설명할 수가 없을 것 같네요.

저는 더 이상 오라클에서 일하지 않습니다. 앞으로도 절대로 일하지 않을거에요!
반응형

'해우소' 카테고리의 다른 글

나도 한때 건담을 그리고 놀았다.  (0) 2019.04.23
스타트업 성장 그래프의 실제 모습  (0) 2019.04.23
Scarborough Fair - Celtic Woman live performance  (0) 2018.09.14
Blowing in the Wind  (0) 2018.09.14
TRY TO REMEMBER  (0) 2018.09.14