본문 바로가기
오픈 준비, 오픈, 안정화 오픈 준비 운영서버 준비 개발이 끝나갈 때쯤엔 오픈 시기가 다가온다. 기본적으로 운영서버가 들어와야 되고, 거기에 서버 담당자가 OS나 기본 소프트웨어를 설치하고, 애플리케이션을 실행할 WAS나 솔루션 등이 설치된다. SWA는 유료 솔루션은 엔지니어에 설치를 요청하고, 무료 소프트웨어는 직접 설치와 설정을 진행한다. 그리고, 기본 설치 소프트웨어가 정상적으로 작동하는지 애플리케이션을 배포하고, DB에 데이터를 올려서 테스트를 진행한다. 여기까지가 운영서버가 들어온 후 기본적으로 하는 테스트이다. 보통 1개의 인스턴스로만 구성하는 개발서버와 달리 운영서버는 2개 이상의 서버 또는 WAS 인스턴스로 구성한다. 여기서 신경 써야 할 것이 있다. - WAS에서 HTTP Session을 이용해서 사용자 정보를 저.. 2022. 4. 21.
개발 프레임워크 설계 소프트웨어 아키텍처에 대한 설계가 끝나면 WAS에서 수행될 업무프로그램 개발의 기본이 되는 개발프레임워크를 구성해야 한다. 일반 웹이라면 Spring과 MyBatis를 사용하면 되겠고, 배치라면 Spring Batch 등을 이용해서 구성하게 된다. 중요한 것은 소프트웨어 아키텍처 요구사항에 만족하도록 해야 하는 것이다. 그러므로, 웹이라고 무조건 Spring MVC 기반으로 하는 것이 아니고 요구사항에 부합하는 최적의 조합을 찾아야 하는 것이다. 일단 요구사항이 나오면 그에 적합한 여러가지 솔루션이나 라이브러리를 조사한다. 그중 기능, 성능, 가격, 개발편의성 등에 따라 한 가지를 선정하는 과정을 거친다. 별도 프로젝트로 실제로 프로그램을 만들어서 BMT를 수행하면서 비교해 볼 수도 있지만, 실제 개발프.. 2022. 3. 21.
소프트웨어 아키텍처 설계 소프트웨어 아키텍처 관련 요구사항에 대한 조사가 끝났으면 이를 만족하는 아키텍처를 설계해야 한다. 아키텍처는 요구사항에 따라서 매번 바뀌기 때문에 결국은 좋은 아키텍처를 많이 보고 자신이 오랫동안 고민하면서 설계해 봐야 실력이 는다. 그래서, 여기서는 반드시 주의해야 하는 사항만을 얘기할까 한다. 일반적으로 서버 안에서 돌아가는 개발 프레임워크는 구성 방법의 차이가 있어도 문제가 있어서 구현이 불가능한 경우는 없다. 즉, 어떻게든 돌아가게 할 수 있다는 의미다. 하지만, 동일하거나 원격의 서버에서 별도의 프로세스로 돌아가는 프로그램이나 솔루션은 서로 통신하는 프로토콜이 일치하지 않으면 통신을 할 수가 없다. 그러므로, 소프트웨어 아키텍처 설계는 단순히 장표에서 두 프로세스 사이에 화살표를 하나 그린다고 .. 2022. 3. 21.
요구사항 조사 중요한 시작점이 요구사항 조사다. 고객이 원하는 시스템이 어떤 것인지 잘 듣고 정리해야 한다. 그래서, 불가능한 요구가 있다면 어째서 불가능한지 설명을 해야 하고, 서로 상충되어 도저히 만족할 수 없는 요구사항이 있다면 하나를 포기하도록 설득해야 한다. 이를 위해서 설득의 기술이 많이 필요하다. 참고로 가장 잘 먹히는 설득방법은, '대부분 프로젝트에서는 이렇게 합니다' 또는 '지난 프로젝트에서 이렇게 해서 지금까지 잘 운영되고 있습니다'이다. 결국 열심히 공부하고 사례를 찾아 보고 경험을 쌓는 것이 최선이다. 대개 고객은 IT에 대한 전문가가 아니고 일반적인 시스템 사용자의 관점에서 이야기한다. 이런 추상적인 요구사항을 IT적으로 구체화하는 과정이 요구사항 조사다. 고객의 요구사항을 머릿속에서 잘 소화시.. 2022. 3. 17.
Software Architect란? 지난번에 SWA에 관해 재미 삼아 썼던 글이 예상외로 많은 사람들의 관심을 끌었다. 간단하게 SWA의 업무를 설명도 하고 별 책임의식 없이 몸값이 올라간다는 이유로 뛰어드는 사람들을 겁줘서 쫓아내려는 목적이었는데, 예상 밖의 큰 관심 때문에 약간의 죄책감이 들기 시작했다. 그래서, 좀 친절한 가이드를 써 보기로 마음을 먹었다. 20년 넘게 이 업계에 몸 담았지만 우리나라에서 일하는 SWA의 업무에 대해 가이드한 글은 거의 본 적이 없는 것 같다. 그러니까, 필자가 마구 휘갈겨 쓴 글이 이렇게 많은 관심을 받았을 것이다. 필자도 선배나 교육기관으로부터 이런 교육을 받은 적이 없고, SI 프로젝트를 수행하면서 배운 것이다. 읽다 보면 당연히 필자와 다른 생각이 있을 수 있고 각 프로젝트에 상황에 안 맞는 경.. 2022. 3. 15.
개발자의 질문에 대처하는 우리의 자세 SWA로 일하다 보면 개발자로부터 수많은 질문을 받게 된다. 개발자의 수준도 천차만별이라서 말도 안 되게 쉬워서 어이없는 경우도 있고, 너무나 어렵고 복잡해서 해결해 줄 수 없는 질문까지 다양하다. SWA는 어떠한 질문에도 흥분하거나 멘탈이 흔들려서는 안 된다. 언제나 의연한 자세로 마음속에는 항상 '그럴 수 있어'라는 말을 되새기며 살아야 한다. 우리는 동업자 SWA와 개발자는 상하관계가 아니고 함께 프로젝트를 수행하는 동업자의 관계다. PL과 개발자 사이는 상하관계가 될 수 있지만, SWA와 개발자 사이에는 상하관계가 없다. SWA가 프레임워크와 개발환경을 준비해서 개발자에게 제공하면 개발자는 개발을 하고 개발중에 의문이 생기면 SWA에게 질문을 한다. 개발자가 잘 이해하고 빠르게 개발할수록 프로젝트.. 2022. 3. 2.
개발단계에서의 개발자 지원 개발자에게 교육을 했다고 곧바로 개발자가 개발을 원활히 할 수 있는 것은 아니다. 이번 프로젝트에서 사용하는 기술을 모두 사용해 봤고 능숙하게 다룰 수 있는 개발자라면 빠르게 적응할 수 있지만, 이렇게 준비된 개발자는 일부이거나 많아도 절반 정도일 것이다. 준비된 개발자가 많은 상태에서 개발을 시작하려면 개발자를 뽑을 때 준비된 사람만 뽑던가, 현재 SI판에서 보편적으로 사용하는 기술로 개발 프레임워크를 구성하면 된다. 그래서, 나는 최신기술보다는 비교적 신기술이긴 한데 보편적으로 많이 사용하는 기술을 사용하려고 노력하는 편이다. 그래야 개발자들의 개발환경에 대한 러닝커브가 짧아진다. 코드 인스펙션 결국 최고의 개발속도(개발생산성)를 얻으려면 개발자가 빨리 적응하도록 SWA가 열심히 지원해야 한다. 이를.. 2018. 7. 14.
개발가이드 작성 및 개발자 교육 개발자가 사용할 개발환경에 대한 준비가 끝나면 개발가이드를 작성해야 한다. 개발가이드는 프로젝트에 투입된 개발자들도 참조하지만 시스템을 오픈한 후에 유지보수를 담당하거나 그 후에 인력이 변경될 경우에 인계받은 개발자도 볼 수 있기 때문에 설명을 듣지 않더라도 문서만으로 필요한 내용을 찾을 수 있도록 정보를 빠짐없이 기록해야 한다. 어떤 종류의 가이드나 마찬가지겠지만, 글만으로 설명하는 것보단 그림을 그리거나 샘플코드를 보여 주면서 개발순서에 따라 하나씩 차례로 설명하는 것이 이해도를 높이는 데 도움이 된다. 소프트웨어 아키텍처 먼저 소프트웨어 아키텍처에 대한 설명을 한다. 소프트웨어 아키텍처 구성도와 함께 구성요소와 각각의 역할에 대해 간단히 설명한다. 구성요소가 많다면 처음에는 모두를 포함한 큰 구성도.. 2018. 3. 11.
개발프레임워크 구현 SWA의 코딩 능력 개발환경이 준비되었으니 이제부터는 개발프레임워크를 구현해야 한다. 로컬 개발환경 구성까지는 SWA로서 경험이 많지 않아도 차례만 잘 따라서 어느 정도의 시간만 투자하면 얼추 비슷한 결과물이 나올 수 있지만, 이번 과정은 아주 많은 프로그래밍 언어적인 지식과 경험에 의해 정교하고 수준 높은 코딩 능력이 필요하다. 필자의 경험을 바탕으로 생각해 보면 최소한 4년 정도는 공통모듈이나 프레임워크 프로그램 개발을 해 봐야 어느 정도 수준의 개발프레임워크를 개발할 수 있을 것 같다. 참고로 코딩 능력을 빠르게 향상시키는 첫번째 방법은 잘 만든 코드를 많이 보는 것인데, 그 코드에는 능력 있다고 알려진 선배의 코드를 참조하거나 공개된 오픈소스 라이브러리의 소스코드를 보는 것이다. 이런 면에서 SW.. 2018. 3. 1.
로컬 개발환경 구성 개발 프레임워크를 구현하기 전에 개발환경을 준비해야 한다. 이 환경은 SWA가 프레임워크를 개발할 때도 사용하겠지만, 이걸 그대로 개발자에게 배포해서 실제 업무프로그램을 개발할 때도 사용해야 하니까 처음부터 가볍고 편리하게 사용할 수 있도록 하는 것이 중요하다. 결국 개발환경이 개발생산성에도 영향을 미친다는 의미다. Java 버전 선택 WAS의 버전 가장 먼저 선택할 것은 Java 버전이다. 되도록 최근에 나온 버전 중에 버그픽스 버전이 높은 것이 좋고, WAS의 버전과 동일한 버전을 로컬 개발환경에서 선택해야 한다. 그래야 개발된 소스를 빌드해서 WAS에 배포했을 때 클래스파일의 버전문제가 발생하지 않는다. 인터페이스 대상의 버전 또 하나 Java 버전을 결정할 때 고려해야 하는 것은 인터페이스 대상 .. 2018. 2. 16.