본문 바로가기

개발자정보

강책임님의 개발자 신입사원 교육 #1

반응형

안녕하세요.

강책임님의 개발자 신입사원 교육을 시작 합니다.

개발업체의 신입사원이 되면 많은 새로운 용어를 접하고 많이 사용하게 됩니다.

그러나 그 용어에 대해서 정확하게 알고 사용하는 사례는 얼마 되지 않아 오늘 IT 용어에 대해서 이야기 해보려 합니다.

그리고 신입사원 여러분들이 가장 많이 사용하는 데이터 베이스에 대해서도 잠깐 알아 보도록 하겠습니다.

이번 시간은 너무 부담 갖지 않고 가벼운 마음으로 들으셔도 되지만 어떤 일을 하든지 항상 정확한 정의를 알고 사용하는 것이 중요한지 그 것을 찾아보는 습관을 가졌으면 하는 마음 입니다.

 

SI는 System Integration의 약자로 정보 시스템 구축을 말하는 IT 용어 입니다.

 

정보 시스템에 관한 요구사항 정의, 분석, 설계, 구축, 테스트 및 나아가서 운영까지의 모든 서비스를 제공을 말 합니다.

 

SM은  System Maintenance의 약자로 시스템 운영으로 구축된 전산 시스템을 환경 변화 또는 문제가 발생 등을 처리하여 정상적으로 가동 될 수 있도록 유지와 보수를 하는 서비스 입니다.

 

현실 세계에서 개발자들이 많이 고민하고 궁금해 하는 내용이 있습니다.

 

SI 프로젝트가 더 좋은지   SM 프로젝트가 더 좋은 지에 대한 이야기 입니다.

 

대부분 초급 선배님들의 이야기를 들어보시면  대부분 SI 프로젝트를 선택 하시죠.

 

그러나 현실은 SI냐 SM이냐가 중요하지 않습니다.

 

투입되는 고객사의 규모와 성격 그리고 내가 담당하는 시스템이 중요하며 그 중에 내가 어떤 업무를 하는 것에 따라 자신의 삶이 결정되는 경우도 있습니다.

 

개인적으로 후배 분들이 만약 SI 프로젝트와 SM 프로젝트 중 하나를 선택 하셔야 한다면 어느 프로젝트에 좋은 선배들이 있는지 확인해 보시고 판단하는 것이 가장 현명한 방법이라고 생각 합니다.

 

꼭 명심해 주셨으면 하는 것은 대부분의 후배 분들 중 원대한 꿈과 희망 그리고 강한 의지가 있겠지만 그 것 보다는 당장 오늘 무엇을 하고 내일 무엇을 할 것인가 체크하고 계획하는 습관을 가져 주시길 부탁 드립니다.

 

분명히 우리 옆에는 성실하고 퇴근과 휴일을 이용해서 자기 발전하고 점심 시간에 간단하게 먹고 그 시간을 활용해서 공부하는 여러분들의 선배가 이곳에 지금도 같이 있습니다.

 

계속해서 용어에 대해서 알아보도록 하겠습니다.

 

웹 서버는 HTTP 프로토콜을 통해 클라이언트 즉 웹 브라우저에서 요청 정보를 받아 처리하고 그 결과를 다시 웹 브라우저로 보내주는 서버를 말하며
아파치(Apache), 마이크로소프트사의 I-I-S(Internet Information Services)가 대표적으로 있습니다.

 

서버 단에서 Application을 동작할 수 있도록 지원해주는 Java 기반 또는 .NET 기반이 대부분이며 Tomcat, J-Boss등을 많이 사용합니다.

 

데이터 베이스는 한 조직의 여러 응용 시스템이 공용하기 위해 최초의 중복으로 통합, 저장된 운영 데이터의 집합입니다.

 

데이터베이스시스템은 응용 프로그램과 데이터베이스 사이의 중재자로 모든 응용프로그램들이 데이터를 공유 할 수 있도록 관리해주는 시스템을 말합니다.

 

파일 시스템에서 발생한 데이터 종속성과 중복성 등의 문제점을 해결하기 위한 시스템이기도 합니다.

 

프레임워크는 특정 형태의 소프트웨어 문제를 해결하기 위해 상호 협력하는 클래스 들과 인터페이스의 집합이라고 정의 합니다.

 

재 사용성, 단순성, 확장성, 역활 구분 및 유지 보수가 용이 합니다.

 

프레임워크와 라이브러리의 차이점을 살펴보면 라이브러리는 어플리케이션에서 호출 할 수 있는 함수와 루틴으로 구성되어 있으나 프레임워크는 특정 기능들을 제공하기 위해서 위해 확장 할 수 있는 일반적인 상호 협력적인 컴퍼넌트를 제공합니다.

 

스파게티 프로그램이라고 아시나요?

 

처리의 흐름과 구조를 파악하기 어려워 수정과 기능을 추가가 어려운 프로그램을 말하는 용어 입니다.

 

프로그래머가 GO TO문이나 변수의 유효 범위를 필요 이상으로 넓게하여 구조를 확인하기 어려운 프로그램을 비유하여 면이 복잡하게 얽혀서 몇 가닥의 면 만을 뽑아 내려고 해도 전체가 따라 오는 스파게티에 비유한 표현입니다.

 

알고리즘이나 디자인 패턴 관련된 서적을 한번은 읽어 보세요.

 

CRM은 Customer Relationship Management의 약자로 고객관계관리, 고객관계경영 등으로 불리고 있습니다.

 

회사와 고객과의 상호작용에 있어 발생하는 영업, 서비스 등 모든 면을 다루고 있습니다.

정보화 사회의 발전으로 소비자의 구매 패턴의 변화가 일어나고 이에 따라 회사 역시 그들의 고객관리 정책을 변화시키고 있습니다.

 

고객 수익성과 고객 만족의 극대화를 위해 고객 정보를 적극적으로 활용, 기업 내 사고를 바꾸자는 기업 경영 혁신적 성격을 내포하고 있습니다.

 

기업은 고객의 정보 취득을 전사적으로 실시하고 이 데이터를 바탕으로 데이터 분석을 시행합니다.

 

이 결과를 통해 신규 고객 획득, 우수고객유지, 고객가치증진, 잠재고객활성화, 평색고객화 등 고객 가치를 극대화시킬 수 있는 전략을 통해 마케팅을 실시합니다.

 

앞에서 CRM의 정의를 보았을 떄 B2C의 성격이 두드려지는 것을 알 수 있습니다.

 

B2B의 영업관리는 기업고객 관점에서 많은 차이가 있습니다.

 

ERP는 비지니스 상의 모든 요소들을 통합 관리하는 비지니스 시스템을 뜻합니다.

 

RFI는 Request for Infomation의 약자로신규 도입 할 시스템에 기능 요청서입니다.

 

RFP는 Request for Proposal로 구축 할 시스템의 주요 기능 정의서 입니다.

 

제안서는 시스템 구축을 위해 공식적 제안 문서를 말합니다.

 

WBS 는 work breakdown structure 작업 명세 구조입니다.

 

일상 생활에서 많이 듣고 사용하지만 스쳐 지나가는 용어의 정의에 대해서 알면 무엇이 좋을 까요?

 

우리는 이제 프로젝트 투입 전 해당 사이트 담당자 또는 개발 리더의 면접을 많이 경험하게 될 것 입니다.

 

 

자신이 무엇을 경험했는지 무엇을 할 수 있는지 이야기 하는 것이 프로젝트 투입 여부를 결정 요소의 전부 입니다.

 

내가 이야기 할 떄 그 것을 정확히 알고 이야기하는 것과 모르고 이야기하는 것이 얼마나 다른 것인지 경험 하실 겁니다.

 

새로운 고객사 또는 프로젝트에 투입 되거나 이전이라면 고객사와 관련된 용어를 찾아 보시길 추천 드립니다.

 

그럼 우리가 가장 많이 사용하고 개발자를 평가 할 때 중요한 기술 중 하나 인 데이터 베이스에 대해서 간략하게 알아 보겠습니다.

 

데이터 베이스는 한 조직의 여러 응용 시스템이 공용하기 위해 최초의 중복으로 통합, 저장된 운영 데이터의 집합입니다.

 

데이터 베이스시스템은 응용 프로그램과 데이터베이스 사이의 중재자로 모든 응용프로그램들이 데이터를 공유 할 수 있도록 관리해주는 시스템을 말합니다.

 

파일 시스템에서 발생한 데이터 종속성과 중복성 등의 문제점을 해결하기 위한 시스템이기도 합니다.

 

우리가 향후 교육에서 구체적으로 다룰 데이터베이스 언어의 종류는 데이터 정의어(DDL), 데이터 조작업(DML), 데이터 제어어(DCL)이 있습니다.

 

데이터 사전 정보로는 테이블, 인덱스, 뷰, 함수, 프로시져와 같은 스키마 객체 Defult, Check 등의 열에 대한 기본값 Not Null, 참조 무결성과 같은 무결성 제약조건에 대한 정보 그리고 사용자에게 부여된 권한 등이 있습니다.

 

DBMS의 발전 과정이나 관계형 데이터베이스 시스템, 객체지향 데이터 베이스 시스템등은 관심있는 분은 찾아서 보시면 좋을 것 같습니다.

 

데이터베이스 설계는 요구 사항 분석, 개념 설계, 논리 설계, 물리 설계, 구현으로 이루어져 있습니다.

 

요구사항 분석은 사용자 및 범위 설정을 합니다.

개념 설계는 개념 스키마 모델링, 트랜젝션 모델링 즉 객체 관계 모델(Entity-Relation Model), 자료양과 사용패턴분석, 전사적 데이터 모델링을 수행합니다.

논리 설계는 DBMS에 따라 논리적 모델로 변환 및 트랜잭션 인터페이스 설계를 수행합니다.
모델에는 계측형 데이터모델, 망형 데이터 모델, 관계형 데이터 모델, 객체지향형 데이터 모델, 개체관계형 데이터 모델이 있습니다.

물리설계는 물리적 구조설계, 트랜젝션 세부 설계를 수행합니다.

저장 레코드 양식, 레코드 집중 및 분산, 접근경로 등 설계하고 응답시간, 저장공간 효율성, 트랜잭션 처리도 등을 고려합니다.

구현단계는 데이터베이스시스템의 데이터 정의언어로 스키마 변경하고 트랜잭션 프로그램밍을 수행합니다.

정규화 또는 Notmalization이라는 말을 들어 보셨나요?

정규화는 이상현상을 야기하는 속성간의 종속관를 제거하기 위해 릴레이션을 작은 여러 릴레이션으로 무소실 분해하는 과정입니다.

관계형 데이터베이스에서는 데이터 일관성, 최소한의 데이터 중복, 최대한의 데이터 안전성을 확보하기 위한 방법으로 사용합니다.

후배분들은 테이블 생성시 다음 항목들을 고려하셔야 합니다.

중복에 따른 갱신이상 현상의 제거로 일관성 유지

자료구조의 안정성 확보, 자료 불일치성 최소화

효율적인 검색이 가능해야 합니다.

중복 제거로 저장공간을 효율적으로 사용해야 합니다.

데이터 신규 발생시 데이터베이스 재구성의 필요성을 감소하도록 유연한 구조로 만들어야 합니다.

향후에 시간이 있을 때 제1정규형부터 제4정규형 까지 정리해 보는 시간을 갖도록하면 좋을 것 같습니다.


마지막으로 우리가 많이 사용하는 UI 관련 도구와 서버 관련 도구에 대해서 알아 보겠습니다.


최근 적용되는 기술로는 TypeScript, jQuery, Bootstrap, React, Node.js 등이 있습니다.

상용제품으로 X-Platform, Nexacro, Websquare 및 다양한 UX 또는 Grid를 활용하여 시스템이 구축되고 있습니다.

대부분 저희는 Java기반의 제품을 사용하며 대기업의 자체 프레임웩을 사용하기도 하고 최근 대부분은 Sping Framework를 많이 사용하고 있습니다.

데이터베이스는 지금까지 대부분 Oracle를 사용했고 가끔 DB2를 사용하기도 했습니다.

최근 항상 이슈가 되었는 엄청난 오라클의 도입비용 및 유지보수비용 때문에 MariaDB를 도입하는 경우가 많이 있습니다.

시간되면  현재 실제 업무에서 사용하는 Query중에서 오라클에서 MariaDB로 변경 했을 경우 어떤 유형이 있고 문제점에 대한 해결 방안에 대해서 연구하는 시간을 가지면 좋을 것 같습니다.


최근에 많이 사용되는 속성과 값이 쌍으로 이루어진 데이터 오브젝트를 전달하는 JSON 방식의 통신에 대해서도 알아보면 좋을 것 같습니다.

자바스크립트 언어로 부터 파생되었다거나 역사나 개념적이 내용 보다는 실제 업무에 적용되었을 경우에 UI 패턴에 따른 JSON 구성 및 서버처리 관점에 접근해서 연구해 보시고 사례를 공유하도록하면 좋을 것 같습니다.

예제로 기본정보와 여러건의 상세내역을 한번에 서버에 전송하고 한번에 받아서 처리하는 방법에 대해 다양한 사례 및 구현 방안과 예제를 만들어 공유 할 수 있도록 해주시고.

새로오신 분들에게 가이드 할 수 있도록 정리해 주시면 좋을 것 같습니다.

클라우드 환경이나 Salesforce와 같은 Saas 환경의 개발 기술에 대해서도 공부하고 내용들을 주제별로 발표하는 시간을 가졌으면 합니다.


감사합니다.

 

 

 

 

 

 

반응형