시나리오를 설명하는 공식적인 반 패턴이 있습니까?


10

일부 코드는 Excel 스프레드 시트 (Office Interop)를 생성하기 위해 작성되었습니다.

  • 코드의 성능이 매우 떨어집니다.
    • 서브 시스템은 밤에 파일을 생성하도록 설계되었습니다. 밤에는 성능이 중요하지 않습니다.
      • 선택한 매개 변수 세트에 따라 사용 가능한 100 가지 파일 중에서 올바른 파일을 선택하는 기능이 작성됩니다.
      • 실제 파일이 존재하므로이 파일을 백업하기 위해 아카이브 시스템이 추가됩니다 (아카이브 할 이유가 없습니다.이 파일은 즉시 생성되어야합니다).
      • 이 시스템에는 구성 파일이 포함되어 있지 않으며 대신 코드가 실행중인 서버에 반영되는 하드 코딩 된 "서버 선택기"기능이 있습니다.
      • 이 서비스를 지원하고 실행하려면 예약 된 작업이 필요합니다.

이것은 하나의 문제로 귀결됩니다. 원본 코드는 프로덕션 환경에서 실행하기에는 성능이 너무 떨어집니다.

성능 문제가 해결 되었으면, 서브 시스템 및 이후 보관 시스템, "파일 선택기 팩토리 기능", 하드 코딩 된 실패 지점 및 스케줄 된 태스크의 유지 보수 및 추가 된 실패 지점이 존재하지 않아도됩니다.

당신이 원한다면 이것은 "계단식 실패"입니다. 원래 문제로 인해 더 나쁜 코드, 더 나쁜 솔루션 및 불필요한 오버 헤드가 발생했습니다. 그것을 묘사하는 공식적인 반 패턴 또는 일반 용어가 있습니까?


1
확장 불가능한 코드? 한 달 안에 호스팅 제공 업체가 영업을 중단하고 프로덕션 환경을 새 서버로 마이그레이션해야하는 경우 소프트웨어 릴리스와 일반 비상 패닉이 필요합니까? 나는 ... 당신이 답을 알고 있다고 생각
maple_shaft

1
와우, 내가 12 년 전에 쓴 보고서 생성기 앱처럼 들린다. 구성 및 하드 코딩 부족을 제외하고는. 아카이빙은 나에게 필요한 법적 요구 사항이 될 수 있지만, 쓸모는 없지만 어쨌든 필요합니다. 처음에는 성능이 좋지 않았지만 제대로 최적화 된 별도의보고 DB를 만들면 사라졌습니다. 트랜잭션이 많은 DB에서 보고서를 실행하는 것은 많은 나쁜 아이디어의 시작입니다.
jfrankcarr

답변:


23

용암의 흐름?

컴퓨터 프로그래밍 전문 용어에서, 용암 흐름은 차선의 조건에서 작성된 컴퓨터 코드가 생산 상태에 놓여 개발 상태에있는 동안 추가되는 문제입니다.

Perl Design Wiki : Lava Flow는 "코드가 나오고 영구적으로 변할 때 고고 학적 다양성의 건축 적 특징이됩니다. 사물은 문제없이, 그 아래에있는 것을 바꿀 희망없이 구조물 위에 세워집니다. 기존 코드는 역사적 호기심으로 보입니다. "

종종 시스템을 프로덕션 환경에 배치하면 원래의 불완전한 디자인과 많은 추가 구성 요소가 종속되어 있으므로 이전 버전과의 호환성을 유지해야합니다.

용암의 흐름은 종종 프로젝트를 진행하는 개발 팀의 변화로 인해 악화됩니다. 작업자가 프로젝트를 시작하거나 종료하면 시스템 측면의 목적에 대한 지식을 잃을 수 있으며 이러한 부분을 정리하지 않고 시스템의 복잡성과 혼란을 증가시킵니다.

용암의 흐름은 안티 패턴으로 간주되며 일반적으로 발생하는 현상으로 인해 디자인이 열악합니다.


3
나는 이것을 전에 보았지만 (오케이 거의 매일 봅니다) 그러나 나는 그 이름을 전혀 새로운 것이 없습니다.
Kevin

3
감사. 나는 그것을 그렇게 들었다. 나는 보통이 패턴을 윈체스터 미스터리 하우스라고 부릅니다.
jfrankcarr

@jfrankcarr : 나는 당신의 이름을 더 좋아합니다. 매우 영리한.
Kevin

나는 이것이 Lava 흐름이 실제로 의미하는 것이라고 생각하지 않습니다. 아이디어는 더 이상 사용되지 않는 코드가 실제 코드의 풍경에서 용암처럼 응결되었다는 것입니다. 코드가 여전히 사용되는 경우 처음에는 다르게 수행하는 것이 좋을 것입니다.
psr

@psr- ""코드가 나오고 영구적이 될 때 ""섹션은 고고 학적 다양성의 건축 적 특징이된다. 의심의 여지없이 그리고 그 아래에있는 것을 바꿀 희망이없는 구조 위에 물건이 세워집니다. 기존 코드는 역사적 호기심으로 보입니다. "는 발생한 일과 많이 일치합니다.
P.Brian.Mackey

3

이것이 반 패턴인지 확실하지 않습니다. 모든 반 패턴과 마찬가지로, 우리는 그것이 좋은 생각이라고 생각하는 사람이 착각했다는 말을 받아 들여야합니다. 그러나이 경우에는 그럴듯하게 들리고 나는 당신의 말을 받아 들일 것이므로 문제가되지 않습니다.

문제는 안티 ​​패턴이 유용하기 위해서는 일종의 일반적인 함정과이를 피할 수있는 방법을 설명해야한다는 것입니다. 이 경우 성능이 향상되었을 때 성능이 좋지 않은 코드에 대한 해결 방법을 찾는 것 같습니다.

반 패턴, IMHO의 문제는 그것에 대해 아는 것이 가치가 없을 것 같다는 것입니다. 이 작업을 수행 한 사람은 이미 성능을 향상시키는 방법을 아는 것이 좋을 것이므로 이미 수행 방법을 알지 못했을 것입니다. 따라서 반 패턴으로 일반적인 상황에 대해 들어 본 적이 실제로 도움이되지 않았을 것입니다.

이를 설명하는 일반적인 용어 인 "캐스 케이 딩 실패"는 꽤 잘 작동합니다. 처음에는 이해가되지 않은 임무에서 자격이없는 사람들이 좋아하는 용어는 몰래 사냥 이지만이 상황에는 너무 가혹한 것 같습니다. (하지만 내가 알고있는 운명의 기업을 가장 잘 묘사하기 때문에 어쨌든 링크를 조금씩 포기할 것입니다).


+1 많은 좋은 포인트. 당신이 옳을 수도 있습니다. 이 특정 장소에서 프로세스가 여러 번 반복되는 것을 보았습니다. 그래서, 그것을 반 패턴으로 묘사하려는 동기가되었습니다. 이 특정 문제를 해결하기보다는
P.Brian.Mackey

3

이것이 도움이 될지 확실하지 않지만 사무 자동화는 종종 특별한 경우입니다.

사무실 자동화는 사용자 데스크톱에서 자동화해야하는 경우 일반적으로 이런 방식으로 수행됩니다 (. 사무실 자동화 문서에서는 헤드리스를 실행하면 사무실 interop 도구에 심각한 누수가있을 수 있음을 경고하기 때문에 .net 웹 사이트 용). 이 툴킷으로 사무실 문서를 생성하기 위해 헤드리스 프로세스를 작성해야했습니다. 메모리를 되찾기 위해 주기적으로 살해해야했기 때문에 희생 서비스라고했습니다.

설명하는 내용을 보관하는 것 외에는 유감스럽게도 모범 사례가됩니다.

링크 : http://support.microsoft.com/kb/257757


+1-흥미로운 의견입니다. 이것을 명심하십시오. 그런 다음 서비스를 유지해야합니다. 성능은 끔찍하지만. 1 분 동안 5 개 열과 100 개 미만의 행으로 스프레드 시트를 생성합니다. 100 개의 스프레드 시트가 있습니다.
P.Brian.Mackey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.