데이터 액세스 계층 보가 팅


9

상황 : dba는 전체 DAL 코드를 TFS에서 체크 아웃 상태로 유지하는 오프 사이트 계약자입니다. 프런트 엔드 개발자는이 친구가 이메일을 통해 작업을 수행 할 때까지 기다릴 필요없이 열을 추가하고 프로세스 및 기타 사항을 조정할 수있는 것이 좋을 것입니다.

질문 : 팀 전체의 평화 사랑과 행복뿐만 아니라 데이터 무결성을 유지하면서보다 신속하고 민첩한 개발을 가능하게하는 권장 솔루션 / 프로세스는 무엇입니까?


여기에서 열을 추가해야하는 이유와이 열과 관련된 비즈니스 규칙에 대해 걱정하고 있습니다. 당신은 그 주위에 방법을 찾아서 결국 열을 추가 할 수 있지만 잘못된 데이터 유형, null 설정, 색인 정의를 사용하면 열이 테이블에 속하지 않아야하거나 교차 테이블이 완전히 누락 된 경우 어떻게 될까요? 새로운 데이터를 정의 할 때의 비즈니스 영향에 대해서는 누군가가 책임을 져야하며, DBA 이외의 코드에 대한 데이터베이스 변경의 영향에 대해서는 누군가가 책임을 져야한다고 생각합니다. 2 명의 역할은 같은 사람이 할 수 있습니다.
NoChance

DBA가 자신의 지점에서 근무하도록 요구합니다. 주요 개발 지점에 체크 아웃 권한을 부여하지 마십시오. 또는 자체 개발 브랜치를 만들고 필요에 따라 변경 사항을 병합하십시오.
SoylentGray

답변:


11

Martin Fowler와 Pramod Sadalage는 이 주제에 대해 훌륭한 기사 를 썼습니다 .

모든 개발자는 자신의 데이터베이스를 변경하여 변경할 수 있습니다. 이러한 변경 사항은 마스터 데이터베이스에서 변경 사항을 구현하는 DBA에 변경 변경 사항으로 다시 전달되므로 프로세스에 여전히 관여하고 있으므로 데이터베이스의 구조와 요구 사항에 대해 가장 잘 알고있을 것입니다. 프로세스에 관련된 모든 사람들에게 만족스럽고 매우 민첩하기 때문에 이것이 최선의 방법이라고 생각합니다.

비슷한 방식으로 DAL을 변경할 수 있습니다. 당신이 끝났다고 생각 될 때 변경하고 DBA에 대한 변경 세트를 제공하기 만하면 DBA가이를 검토하고 그의 마스터로 병합 할 수 있습니다.


1
우 ...이 내가 아직 upvote에 어차피하지만 당신은 확실히 하나오고있어 ... 너무 아마도 / 아마 대답,하지만 난 다른 사람이 말하는 것을보고 조금 기다려야 같은 여기 내 첫 번째 질문입니다 같은 전
spaghetticowboy

이것의 문제점은 개발자가 dba가 승인한다는 가정하에 모든 작업을 수행한다는 것입니다.
HLGEM

@HLEGM : 내 경험상 DBA가 거의 승인하지 않거나 약간만 변경하는 경우는 거의 없습니다. 유휴 개발자가 앉아있는 것보다 여전히 낫습니다. 또한 DBA와 개발자가 모두 합리적인 사람이라면 최상의 솔루션으로 이어질 것입니다.
팔콘

링크를 게시하는 대신 왜 훌륭한 기사인지 설명해 주신 +1
JeffO

@HLGEM-두 당사자 모두 자신이하는 일을 정당화해야한다고 생각합니다. DBA는 DB 문제에서 의심의 혜택을 받아야하지만, 최종 결정을 내릴 다른 사람에게 대답해야합니다.
JeffO

3

Wellll, 내가 DBA 일을 할 때, 나는 지저분한 더러운 프로그래머가 자신의 미트를 얻을 수 없도록 모든 것을 잠그는 것으로 알려져 있습니다. 모든 사람들은 자신이 더 잘하는 방법을 알고 있다고 생각하고 스스로 더 쉽게 만들 수 있도록 "비틀어"부정한 혼란을 야기합니다.

다른 대안은 그것을 넓게 열어 놓고 프로그래머가 잠시 동안 근접하게 한 다음 물건이 가까이 다가 가기 시작할 때 뛰어 들어 순서를 부과하는 것입니다. 잘려 지거나 변경되어야하는 것에 따른 실제 악몽 ... DBA는 종종 프로젝트 전체를 더 잘 이해하며, 무해한 일부 변경은 문제가 될 수 있습니다.

그가 유일한 게이트 키퍼가 되려면 고정 된 사양을 갖추거나 비전을 다른 개발자들에게 "판매"할 수 있어야합니다.


우리는 꽤 지저분하다. 그리고 때때로 우리는 꽤 참을성이 없어서 스스로 일을해야한다
spaghetticowboy

@ spaghetti : 응 ... DBA 작업을 많이했기 때문에 아마도 나보다 더 나쁠 것 같다. 대부분의 프로그래머보다. 데이터베이스를 사용하면 데이터베이스를 조기에 확보하는 것이 훨씬 중요합니다 ... 프로젝트 후반까지 계속 추가하면 문제가 발생할 것입니다.
Satanicpuppy

3

다른 문제를 대체하는 주요 문제가 있습니다.

  1. 계약자가 항상 코드를 체크 아웃 한 이유는 무엇 입니까?

그는 왜 이렇게 할 수 있습니까? 적극적으로 수정하지 않는 한 파일을 체크 아웃하지 않아야합니다. 체크 아웃에 대한 팀 정책이 있어야합니다.

계약자는 (원하는 것이 든 아니든) 팀의 일원으로 일하며 때로는 팀의 다른 구성원이 변경해야 할 수도 있습니다. 이것은 통신 문제입니다. 불행히도이 통신 문제를 자동으로 해결하는 방법은 없습니다.


1

수평 레이어 대신 사일로에서 여러 레이어로 작업하는 것을 선호합니다.

이런 식으로 1 명의 사람 / 팀이 차단할 수 없습니다.

또한 개발자가 여러 기술을 갖추고 있고 기능을 훨씬 쉽게 이동할 수 있음을 의미합니다.

물론 더 전문적인 작업이 필요할 수있는 섹션 (UI 디자인 및 DB 디자인)이 있지만 아이디어를 얻을 수 있습니다.


1

간단하지만 아직 3 가지 환경이 있어야합니다.

  • 개발 환경
  • 품질 관리 환경
  • 생산 환경

개발 환경은 개발자가 관리해야합니다.

RC 환경을 추가 할 수도 있습니다.

또 다른 대답은 여러 환경이 불가능한 경우 모의 저장소를 기반으로 개발할 수 있다는 것입니다. 이렇게하면 모델을 구축 한 다음 계약자가 모델을 DB와 일치시킬 책임이 있습니다. 어떤 식 으로든 개발자가 데이터베이스에 대해 걱정할 필요가 없으므로 더 좋습니다.


1
OP가 체크 아웃 된 코드에 대해 이야기하고 있습니다. 다른 환경은 영향을 미치지 않습니다.
NotMe

1

당신 문제는 저에게 인력 중 하나 인 것 같습니다. 데이터베이스 전문가가 모든 잠재적 daatbase 변경 사항을 승인하는 것이 적절하고 필요합니다. 현재 담당자가 적시에 작업을 수행 할 수없는 경우 더 많은 데이터베이스 전문가가 필요합니다.


+1 : 문제의 원인 일 수도 있습니다. 많은 회사에 DBA가 너무 적습니다.
팔콘

1

이것은 기술적 인 문제만큼 관리 문제입니다.

온 사이트 또는 오프, 계약자 또는 직원에 관계없이 DBA가 개발자가 어떤 유형의 데이터베이스 변경도하지 못하게하는 데는 분명한 이유가 있습니다.

그러나 정의한 주요 문제는 가용성 중 하나입니다. 관리자는이 사람을 기다리는 시간 / 돈이 낭비된다는 것을 알고 있습니까? 그렇지 않다면, 모든 사람들이 어떻게 앉아 있는지를 생각해보십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.