왜 대부분의 사람들은 데이터 서비스와 데이터베이스가 시스템의 가장 중요한 부분이라고 말하는 이유는 무엇입니까? [닫은

StackOverflow https://stackoverflow.com/questions/1495007

문제

왜 대부분의 사람들은 데이터 서비스와 데이터베이스가 시스템의 가장 중요한 부분이라고 말하는 이유는 무엇입니까?

내가 본 것은 프론트 엔드 개발입니다 : GUI, WEBUI, XAML이 가장 중요한 것입니다. 중간 및 데이터베이스 계층보다 확실히 더 중요합니다.

응용 프로그램의 데이터베이스를 구축하는 것이 큰 문제라고 생각하지 않습니다. 결국, 데이터 스키마는 비즈니스 분석에서 비롯되며 데이터베이스 개발자의 일부에 대한 "창의적"작업은 거의 없습니다. 비즈니스 로직 측 (중간 계층)에 대해서도 마찬가지입니다. 또한 J2EE와 .NET Enterprise Framework는 모두 비즈니스 논리를 개발할 수 있도록 도와줍니다.

그렇다면 데이터베이스 개발자는 무엇을 하는가? 독립형 데이터베이스 개발자가 필요한 이유는 무엇입니까? 왜 대부분의 회사가 여전히 프론트 엔드 개발자 대신 중간/백엔드 개발자에게 더 높은 급여를 지불합니까?

UI를 구축하는 개발자 (Java 또는 C#)는 데이터베이스 지식이 있어야한다고 생각합니다. 이를 통해 전체 응용 프로그램을 구축 할 수 있습니다. 제 생각에, 다타베이스 지식 지식 사람이 어쨌든 응용 프로그램을 개발하게하는 것은 불가능합니다.

여기서 내가 놓친 것이 무엇인지 알려주세요.

정말 감사합니다.

도움이 되었습니까?

해결책

백엔드는 요구 사항과 설계 단계를 통해 더 많은 것을 필요로하는 반면, 프론트 엔드는 일반적으로 변경하기가 훨씬 쉽습니다. 백엔드가 변경되면 프론트 엔드가 변경되어야 할 가능성이 높으므로 백엔드 서비스 (DB 등)를 다루는 변경 요청은 종종 중간 및 전면을 통해 많은 변화가 발생합니다. 프론트 엔드의 변화는 일반적으로 백엔드에 영향을 미치지 않습니다.

DBA 문제는 실제로 프로젝트 규모에 따라 다릅니다. 몇 가지 간단한 테이블과 수천 개의 레코드가있는 프로젝트에 대해 이야기하고 있다면 아마도 옳을 것입니다. 진정한 DBA는 아마도 그 프로젝트에서 그 프로젝트에서 일할 가치가 있다고 생각할 것입니다. 실제 DBA는 DBMS 최적화를 전문으로하는 시스템 관리자와 비슷합니다. 거의 모든 프로그래머는 테이블, 관계, 뷰, 저장 Procs 등을 만들 수 있으며 특히 사용하기 쉬운 ORM을 사용하여 DBA가 사용하는 많은 것들이 실제로 필요하지 않습니다. 그러나 DBM 최적화, 시스템 구성, 장애 조치 구성 등을위한 대규모 프로젝트 및 대규모 데이터베이스 시스템을 작업 할 때 DBA는 중요합니다.

원래 질문은 프로젝트 범위에 대해 이야기하지 않으며 그것이 당신이 혼란스러워하거나 실제 DBA의 중요성을 보지 못하는 곳이라고 생각합니다 (약간의 SQL을 아는 사람과 혼동하거나 데이터 입력 및 전화를하는 사람과 혼동하지 마십시오. 스스로 DBA).

다른 팁

나는 프론트 엔드 측면을 믿는다 : Gui, Webui, Xaml은 중간 계층 및 데이터베이스 계층보다 더 중요하다.

그것은 자동차의 색이 엔진과 타이어보다 더 중요하다고 말하는 것과 비슷합니다.

데이터베이스를 구축하는 것은 큰 문제가 아닙니다. 그러나 올바르게 구축하고 기존 제품을 최적화하고 잘 설계된 데이터 저장소를 유지하는 것은 큰 문제입니다. IMO, 이것이 데이터베이스/데이터 스토어 사람들이 큰 돈을받는 이유입니다.

프로그래머로서 내가 한 가장 어려운 작업 중 일부는 사용자 인터페이스 (XHTML, XAML, Servlets, MVC, ASP.NET 등)를 다루는 것입니다. 즉, 나는 당신이 두 가지 다른 문제에 빠지고 있다고 생각합니다. 데이터베이스 측면에서 Mathew가 말했듯이 진정한 DBA는 일반 개발자가 방법을 모르는 방식으로 대규모 (수백만 레코드) 데이터베이스를 최적화 할 수 있습니다. 중간 계층에서는 UI가 종종 복잡한 이유는 종종 개발자가 실제로 진정한 중간/비즈니스 로직 계층을 구축하지 않기 때문입니다. 그래서 그들은 사용자 인터페이스의 응용 프로그램에 모든 논리를 넣습니다. 도메인 구동 설계 및 OO 디자인 패턴을 알고있는 견고하고 객체 지향적 인 비즈니스 계층을 구축하는 방법을 알고있는 훌륭한 개발자를 찾는 것은 드 rare니다. 데이터베이스 객체와 일치하는 getters/setter만으로 수많은 클래스를 구축하는 것은 객체 지향 디자인이 아닙니다. 따라서 그들은 더 가치가 있습니다.

그 외에는 여전히 UI 작업이 프로그래밍이 매우 어려우며 현재보다 더 중요하다고 생각해야한다는 데 동의합니다.

모두 중요합니다.

데이터베이스를 함께 던지는 작은 앱의 경우 그다지 중요하지는 않지만 그 앱이 시간이 지남에 따라 성장하고 진화하게하고 디자인이 좋지 않아 함정이 빠르게 진행되도록합니다.

데이터베이스 계층과 중간 계층은 앱의 수명과 유지 관리의 열쇠입니다.

다른 많은 이유 중 하나 : 견고한 중간 계층의 경우 요구 사항에 따라 한 GUI에서 다른 GUI로 전환 할 수 있습니다. (Pre Web2.0에서 Web2.0 설계로) 교환 가능한 프론트 엔드.

데이터베이스 지식이 아닌 사람이 애플리케이션을 개발하도록하는 것은 불가능합니다.

웹 서비스에 저장된 절차로 데이터베이스 테이블을 숨기는 경우가 아닙니다.

프론트 엔드는 단지 실제 응용 분야의 피부 일뿐입니다.

중간 비즈니스 계층은 비즈니스 사람들이 생각에도 불구하고 자신의 요구 사항이 무엇인지 거의 알지 못하기 때문에 IMHO를 프로그래밍하기가 가장 어렵습니다. 그들은 정기적으로 마음을 바꿉니다. 에지 케이스는 멋진 디자인을 난파하고 구현하기가 매우 어려울 수 있습니다.

GUI 개발자가 잘못 쓰여진 비즈니스 계층에 프론트 엔드를 작성하는 경우 GUI 개발자가 얼마나 좋은지는 중요하지 않습니다. 또한 제대로 설계되지 않은 데이터베이스에 좋은 비즈니스 계층을 작성할 수 없습니다.

결국, 데이터베이스 계층 또는 중간 단계를 변경하는 것보다 GUI를 다시 작성하는 것이 훨씬 간단합니다. 그 중 하나의 변화는 프로그램의 모든 후속 수준에 영향을 미치기 때문입니다.

의문의 대답에 응답하는 것은 불가능합니다.

모든 사람이 데이터베이스가 모든 시스템에서 가장 중요한 것이라고 생각한다는 전제를 기반으로합니다. 이는 모든 사람들이 많은 시스템이 데이터베이스를 사용하지 않고 많은 숙련 된 사람들이 가장 많이 동의 할 것이라고 생각하지 않을뿐만 아니라 다른 시스템의 중요한 부분은 시스템마다 다릅니다.

실제로, 시스템의 정의에 의해, 모든 부분은 중요해야합니다! 일부 서브 시스템은 다른 하위 시스템보다 비쌀 수 있으며, 일부는 다른 일부는 모듈 식 방식으로 교체 할 수있는 다른 결함 내성 및 다른 일부는 시스템의 일부이므로 중요합니다. 하나가 더 중요하다는 생각은 정량화하기가 어렵습니다. 일부 부품은 선택 사항 ( "비전"장식과 같은 선택적이므로 시스템의 일부로 간주되지 않을 수 있습니다. 그러나 시스템의 더 큰 관점에서 사용자는 참여하고 시스템과의 효율적이고 즐거운 상호 작용은 성공을 보장하는 데 필수적입니다.

이미 여기에 게시 된 비유를 사용하려면 자동차의 페인트가 엔진만큼 중요하지는 않지만 누군가가 색이없는 차를 판매할까요? - 가능성이 없습니다 (그것이 미완성 가구와 같은 제품의 정의가 아니라면).

엔진이 페인트 작업보다 비싸지 않은 것과 마찬가지로 페인트 색상을 선택하는 것보다 엔진을 설계하는 데 더 많은 비용을 지불 할 것으로 기대합니다.

모든 시스템에는 다양한 전문 분야와 복잡성이 있습니다.

J2EE 또는 DOTNET Enterprise Framework 도움말을 통해 항상 비즈니스 논리가 간단합니다.

물론, 비즈니스 논리를 코딩하는 것은 간단한 경향이 있습니다 ... 예외, 오류 처리, 실제로 비즈니스로부터 올바른 요구 사항을 얻는 것에 대해 걱정할 필요가 없다면, 능력 (지금은 그 어느 때보 다 필요)를 추가하십시오. 여러 프론트 엔드 (웹, 데스크탑, 모바일)를 지원하는 단일 응용 프로그램 및 갑자기 "간단한"비즈니스 논리가 중요한 지점이됩니다.

C ++에 대한 지식이 있지만 모든 사람이 VC ++로 잘 코딩 할 수 있다는 의미는 아닙니다.

현재 기술 세계에서 모든 개발자는 대부분의 최신 기술에 대한 기본 지식을 얻었습니다. 그것은 그들이 모든 기술로 시스템을 설계 할 준비가되었음을 의미하지는 않습니다.

모든 것이 경험과 전문화와 함께 제공됩니다. 그들이 UI 디자인을하지 않고 DBA를하는 데 돈을 잘 보냈다는 것을 기억하십시오.

UI 개발자가 DB를 설계 할 수 없다는 것을 의미하지는 않습니다. 데이터베이스 디자인에 대한 경험이 충분하다면 훌륭한 DB 디자이너가 될 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top