본문 바로가기

Project

문제 해결 일지. 문제 : linux centos 환경에서 돌아가는 java application이 있다. 2종류의 thread를 돌린다. 1. 통신 선로로부터 data packet을 체크하여 해당 패킷을 분류 DB의 테이블에 입력함. 1개의 thread 존재 2. db를 체크하여 설정된 에러의 interval time을 계산 하여 초과할경우 에러 메일 송신 . 20초마다 thread생성. 하지만 에러 메일이 송신되지 않는 경우가 있어 thread를 분석해본 결과 2가지 문제점 발견 1. thread의 로직에서 회복 flag를 제대로 회복시키지 못하는 경우가있었음. 두번째가 예상치 못한 문제점이었는데 2. 에러 체크 thread에서 db에서 데이터를 얻어올때 access delay가 발생 할 경우 (*같은 DB를 통해 통.. 더보기
SNA (Shared Nothing Architecture) A shared nothing architecture is a distributed database architecture without a single point of failure. The term "shared nothing" is by imitation of other terms such as "shared disk", "shared network" and so on. A typical shared nothing system would have duplicated disks, processors, power supplies, and networks. To make the system truly resilient, it should also have these systems split between.. 더보기
간단함이란.. 가끔 코드 분석하다 보면 엄청나게 복잡하고 정교한 코드를 볼 수가 있다. 처음에는 이런 코드를 보고 잘짰다는 생각이 들었지만 요즘들어서는 생각이 바뀌었다. 왜냐하면 간단한 구조에 간단한 로직, 쉽게 읽히는 코드가 더욱더 어렵다는것을 느끼고 있기 때문이다. 복잡한 구조에서는 복잡한 코드가 나올수밖에 없다. 구현이란 처음의 구조에 종속적이기 때문이다. 구현되가며 만들어진 코드는 이후의 코드에 제약이 되어버린다. 오히려 간단한 구조와 간단한 로직을 통해 강력한 시스템을 만들수가 있다. 물론! 이 간단함과 복잡한의 기준은 사람마다 차이가 있기 때문에 정확히 무엇이 나쁘다고 말하기 어렵지만 무엇이 좋은지는 쉽게 말할수있다. JAVA의 lang,util클래스를 보면 어려운 코드는 없다. 게다가 필요이상으로 복잡함을.. 더보기
소프트웨어 자동화? 얼마전에 쓴 글 CASE TOOL에서 언급했던 소프트웨어 자동화에 있어 몇가지 깨닮음(?)을 정리하자면 1. 문제의 복잡도가 20% 증가하면 소프트웨어의 복잡도는 100% 이상 증가한다 2. 소프트웨어 재사용은 제한적이다. (일반적으로 재사용 컴포넌트를 만드는데에는 20%이상의 비용이 소모된다. 게다가 범용 컴포넌트는 더 많은 비용이 소모된다.) 3. 소프트웨어 업계의 은탄환은 없다.(점진적 개선만이 있을뿐 획기적인 발전은 앞으로도 없을것이다) 먼저 개발작업이란 현실 세계를 어느정도 추상화시켜 컴퓨터로 표현될수 있게 정리하는 작업이라고 볼 수 있다. 이러한 현실세계를 정리(사양분석)하는데 있어서 그 복잡도와 불분명성은 소프트웨어의 복잡도를 더욱더 증가시킨다. 이러한 근본적인 복잡도는 소프트웨어로서 표현되.. 더보기
CASE TOOL 소프트웨어 위기 현상을 해결하기 위하여 소프트웨어 생산 자체를 컴퓨터의 도움으로 자동화 시켜보자는 개념으로 탄생한 것이 CASE(Computer Aided Software Engineering)이다. 즉, 수작업으로 프로그래밍하고 문서 산출물을 만드는 대신, CASE를 활용하여 산출물을 작성하고 프로그램 코드를 만들어낸다. 이것은 자동화를 통한 개발 기간의 단축 뿐 아니라 생산하는 소프트웨어의 일관성과 통합성, 완전성을 높임으로서 생산성 향상과 품질의 향상을 가져온다는 개념이다출처: 한국표준협회 1980년대에 등장하기 시작한 CASE TOOL은 어려운 개념이 아니라 1970년대부터 등장한 소프트웨어 자동화에 일환으로 등장하기 시작한 자동화 도구를 말한다. 사실 이미 소프트웨어 개발에있어 밀접하게 사용되고.. 더보기
스프링의 장점? 지난 7월에서 11월 약 4개월동안 스프링을 사용해 프로젝트의 Phase1작업이 끝났다. 생애 처음으로 스프링을 만져봤지만 잘짜여진 프레임웍크와 문서(手順書)를 통해 나름 좋은 작품을 만들었다고 만족 하고 있다. 잘짜여진 아키텍쳐 아래 나쁜 코드는 없다고 시행착오를 겪어가며 만들어간 코드 하나하나가 자신의 Layer에서 자신이 목적한바를 구현하는걸 보면 기분이 좋아진다. 대략 이전 프로젝트의 아키텍쳐를 설명하자면, Presentation - Facade - Service - Integration - DAO Struts [ Spring ] iBatis 의 계층으로 구성되어 있고 각 층사이에는 Interface를 통해 소통한다. Spring AOP를 통해 Logging 과 Exception ,그리고 Tran.. 더보기
팀문화와 개발 환경. 난 개인적으로 팀문화를 좋아하며 서로 즐겁게 일할수있는 환경에서 효율적으로 일할 수 있기를 바란다. 왜 팀문화를 좋아하느냐 하면 그것이 1+1 = 3 을 만드는 유일한 길이기 때문이다. 또 프로젝트에서는 그 시너지 효과만이 프로젝트와 구성원의 성공을 이끄는 요인이 된다고 생각한다. 팀원들이 서로를 자극하며 발전하고 좋은 아이디어를 내고 개선해가며 성공을 공유하는것. 물론 이상적이긴 하지만 이것이 직장생활의 묘미가 아닐까? 또 개발하기위해서는 환경이 중요하다. 좋은 환경은 그로 하여금 그 구성원들이 자신을 특별한 사람이라고 느끼게 해주기 때문이다. 또 이러한 엘리트의 의식이 생산성을 높이며 좋은 아이디어를 만드는 요인이 되기도 한다. (단어의 선택이 참으로 중요한데 엘리트주의 가 아닌 엘리트 의식이다.) .. 더보기
스펙이 가지는 의미 나처럼 바보같이 느즈막해서야 이해가는 사람이 있을까 해서 남겨두는 글 HTML4 , J2EE , SERVLET 2.0 , SERVLET 2.4 , JAVA 1.5.... 등등등 수많은 버젼 스팩이 난무하는 세상이다. 하지만 저 도대체 정말로 저 이름들이 뜻하는것은 무엇일까? 난 처음 일반 application처럼 새로운 버젼의 프로그램이 나오는 것으로 생각했었다. 물론 반은 맞는 말이다. 하지만 저것들은 specifications 즉 명세이다. 이것은 표준화란 말로 다시 설명 할수있는데 실제 저 이름이 뜻하는 것은 대상의 기능 및 사양을 정의한 명세서이다. 몇 천장의 상세한 기능을 설명한 구현 명세로서 저 공개된 저 명세서에 맞추어 구현을 하면 그것이 HTML4가되고 J2EE가되며 SERVLET이 되는것.. 더보기
내가 생각하는 객체지향..? 카페모카님의 "나의 머리속 객체지향"을 읽고 나름대로 생각해본 객체지향이다. 객체 각각 자신의 행동과 속성을 가진 프로그램의 단위. 모든 객체는 자신을 규정하고 있는 속성과 목적을 위한 행동을 가지고있다. 상속 표현할 대상을 분류하기 위한 수단. 실세계(구현대상)를 컴퓨터로서 표현하기 위해 대상을 일정부분 나눠서 생각하지 않으면 안된다. 대상들을 비슷한 부분과 다른 부분으로 나누어 표현하기위한 기술중의 하나이다. 캡슐화 객체를 추상화하기 위한 기술. 각각의 객체는 자신을 단순하게 표현함으로서 실제의 복잡한 행동을 감출수있다. 이것은 좀더 높은 추상화 수준(Layer)에서의 구현을 가능하게 해준다. 다형성 공통된 행동을 가진 객체가 있다면 같은 형태로 제어할 수 있다는 것. 자바에서는 이것을 구현하기 위해.. 더보기
프로젝트란..? 프로그램의 개발은 개발만으로 끝나는게 아닌 경제적인 필요에서 나왔다는것을 이해해야한다. 프로젝트를 창출하는것은 경제, 즉 비지니스에 의해서 이다. 예를들면 좋지 않은 소스가 있다. 프로그램은 그럭저럭 돌아가지만 소스안에서는 효율성을 찾아보기 힘들다. 이러한 상황에서 사람을 더 투입해 소스를 고치는것과 늦어진 효율성에 반하는 서버를 사는것이 더 이익이라면 서버를 구입해야 한다. 프로그램을 개발함으로서 얻는 이익과 손해는 이미 프로젝트를 개발하기전에 판단이 서있기 때문에 개발에는 기한이 있다. (프로젝트의 기한을 산출하기 위해서는 실제 요구사항이 명확히 정의되어있야아 함에도 불구하고 프로젝트에는 기한이 있다.) 좋은소스와=개발기간, 늦은 개발에 따른 정치(회사의 방향) ,경제적 손해가 반비례한다는것을 알고있.. 더보기