본문 바로가기

쉽게 풀어본 IT 기술

인터넷의 탄생과 원리 인터넷의 탄생은 역시 국방의 통신에서 시작되었다. 웹사이트는 기존 텍스트 기반의 인터넷에서 이미지를 포함하면서도 화려한 페이지가 만들어지는 HTML 기반의 문서형태로 이미지의 활발한 송수신을 야기했다. 초반 기업 홈페이지로 가장 많이 사용되었다. 모든 기업이 URL이라는 것을 가지기 시작했다. URL은 일종의 주소이다. 인터넷 공간의 주소이다. Uniform Resource Locator이다. 인터넷 주소를 가리키기 위한 규칙이다. http://로 시작하는 부분은 프로토콜을 의미한다. 프로토콜은 통신을 위한 상호간의 약속이다. http:// 프로토콜외에도 ftp도 있고, 여러가지 프로토콜이 존재한다. 요청과 응답의 약속을 정해둔 것이다. 그리고 주소는 http:// 이후에 시작된다. www.ooo.com.. 더보기
서버 기반 컴퓨팅 상식적으로 말하면 서버 기반의 컴퓨터 구조라는 것은 기본적인 서버-클라이언트 구도에서 서버에 비중이 높은 구조이다. 비중이 높다는 것은 대부분의 로직이 서버에서 수행이 되고, 클라이언트는 결과값 위주로 받는 것이다. 반대로 클라이언트가 대부분의 기능을 하고, 서버는 가볍게 수행될 수도 있다. 서버 기반이 되는 것은 클라이언트를 가볍게 하고, 어디서나 할 수 있게 하기 위함이다. 각각은 장단점을 가질 수 있다. 서버 기반으로 하게 되고, 클라이언트의 부담을 줄이게 되면 사용자들은 언제 어디서든 해당 구조의 프로그램을 이용할 수 있을 것이다. 하지만 클라이언트 기반이 되게 되는 경우 특히 응용 프로그램을 설치해서 비중이 많아진다면 그 경우는 매번 설치를 해야 하는 번거로움이 있거나 데이터를 많이 차지할 수도 있다. 클라이언트.. 더보기
클라이언트 and 서버 그리고 WAS, DB서버 클라이언트는 우리가 보고 있는 컴퓨터, 스마트폰이 클라이언트이다. 클라이언트는 손님이기도 하고, 요청자이기도 하다. 엄밀하게 말하면 컴퓨터나 스마트폰이 클라이언트는 아니다. 그 운영체제 내에서 클라이언트로 동작되는 것들이 클라이언트이다. 클라이언트로 동작된다는 것은 요청자 역할을 하는 것이다. 그리고 서버로부터 응답을 받아서 화면에 결과를 보여준다. 대표적인 것이 브라우저인 인터넷 익스플로러이다. 스마트폰의 대부분의 앱은 클라이언트이다. 서버로부터 응답을 받아서 보여준다. 서버와 클라어인트 구도라는 것은 이렇게 서버에서 응답을 해주고, 클라이언트에서 응답을 받아서 보여주는 구조인 것이다. 클라이언트는 컴퓨터 같은 경우는 설치하기도 한다. 카카오톡 앱도 PC버전이 나와서 설치하여 사용할 수가 있다. 컴퓨터.. 더보기
건축물의 구조 설계 같은 시스템 아키텍쳐 시스템 아키텍쳐는 시스템의 서버들의 구성 모습이다. 구조라고 말할 수도 있다. 시스템 구성도로 표현을 하기도 한다. 서버간 연결하는 구성도만을 얘기하는 것은 아니고 좀더 깊은 내용까지 아키텍쳐라고 할 수 있다. 예를 들면 어떤 소프트웨어로 구성을 할지에 대한 것도 아키텍쳐라고 할 수 있다. 이렇게 아키텍쳐를 전문으로 구성하고 설계하는 사람들을 아키텍트라고 한다. 왠지 아키텍트라고 하면 산출물이나 내용을 말하는거 같긴 합니다만, 역할자를 말한다. 시스템 아키텍쳐는 시스템의 기능이나 성능 면에서 중요한 의미가 있다. 어떤 아키텍쳐를 가지냐에 따라서 확장이 용이할 수도 있고, 반대로 어려울 수도 있다. 따로는 SOF(Single of Failure)라고 해서 실패 포인트를 가질 수도 있다. 이러한 것을 보완해.. 더보기
정보시스템 감리의 실제적인 업무 내용 정보시스템에 있어서 감리 영역은 시스템이 잘 구축되어 있는지 점검하는 것이다. 그 기준은 설계 문서가 될 것이다. 설계 대로 구축이 되어 있는지 측면이 구현이 잘되었다고 할 수 있다. 설계도 확인을 해야 한다. 요구사항 대비 요구사항이 반영이 잘되었는지를 봐야 한다. 요구사항이 설계에 반영이 되고, 실제 구현이 잘되었는지까지 봐야 한다. 그리고 구현체가 문제는 없는지를 봐야 한다. 결국 다리를 건축했다고 하면 감리는 이 다리가 원래 설계 목적에 맞게 잘 만들어졌는지 봐야 한다. 안전점검을 하듯이 감리를 하는 것은 시스템이 잘 운영될 수 있게 만들어졌는지 체크를 해보는 것이다. 이론적으로는 그러하고, 현실적인 대부분의 시스템 감리는 일주일 정도의 시간을 가지고 한다. 주로 산출물 리뷰 및 인터뷰로 진행이 .. 더보기
운영 수준 정의 - SLA 서비스 레벨 동의라고 해석되어지는데, 이는 IT 계약 할 때 운영을 맡게 되는 경우 그 시스템이 어느 정도 영속성을 가지고, 장애는 어느 정도까지 허용된다라고 하는 운영의 수준에 대한 부분의 협의 내용이다. 여기에는 서비스가 잘되면 어떤 보상을 주고, 서비스가 특정 시간 이상 안될 수에는 벌금을 물겠다는 내용이 포함된다. 수행 업체는 그 책임을 어느정도를 져야 하는데, 그 책임을 지고 운영을 하겠다는 것을 말로만 하는 것이 아니라 실제 부속계약으로 금전적 내용을 포함한다. 대표적인 것이 서비스 가용율이다. 서버를 운영한다고 해도 대부분은 서버위에 동작되고 있는 서비스가 중요하다. 이 서비스가 얼마나 중단 없이 서비스를 하는 가가 운영 수행사가 책임 져야 할 내용일 것이다. 서비스 가용율은 관련된 수행 내.. 더보기
ITIL은 IT운영의 베스트 사례 모음 ITIL은 IT 운영에 대한 베스트 사례 모음이다. IT를 운영을 할 때보면 구축할 때보다 더욱 체계를 잡기가 어렵다. 구축할 때는 보통 기획을 하고, 설계를 하고, 설계된 대로 구현을 하고 테스트를 한다. 이것이 곧 프로세스이자. 방법론이자. 실제 하는 일이 된다. 쉽게 말해 목표가 명확하다는 뜻이다. 그런데, 운영을 하라고 하면 목표라는 것을 잡기가 어렵다. 그렇다고 장애가 나고 문제만 해결하는 것으로만 운영이라고 한다면 문제에 쫒겨 다니기 바쁘거나 할 일이 없어서 뒹굴거리느라 루즈하다고 할 수도 있다. 시스템 그냥 두면 돌아가는 것을 뭐하는 것이냐는 소리를 들을 수도 있다. 사실 소방서에서 소방차를 관리하고, 소방관들이 불을 끄기 위해서 또는 인명을 구조하기 위해서 준비하는 시간은 불이 나지 않고 .. 더보기
소프트웨어 유지보수도 중요하다. 유지보수라는 것은 구축된 시스템을 운영 및 관리해주는 것이다. 사실 이미 구축된 시스템이라면 많은 일손이 안들수도 있다. 잘 돌아가기만 하면 될 것이다. 물론 B2C 서비스의 경우 상황은 다를 수 있다. 앞서 얘기한 것도 있지만, 린 개발방법론이라든가 DevOps를 한다면 유지보수라는 측면보다는 지속 개발이라는 것이 맞을 것이다. 계속된 요구가 있고, 개선 사항이 있을 것이다. 운영 중에도 개발을 많이 한다. 기존 시스템들은 대개 1.0, 2.0 이런식의 버전을 구분하고, 고도화 프로젝트등을 진행해서 기존 시스템을 사용하다가 어느 순간에 개편 내지 대체를 한다. 하지만 이런 서비스라든가 최근 시스템들은 지속적인 기능 업그레이드 내지는 개발을 한다. 기존과 같은 유지보수이든 지속 개발 관점의 유지보수이든 .. 더보기
매번 헤깔리는 오버로딩, 오버라이딩 오버로딩과 오버라이딩은 기본적으로 객체 지향 개념 중 하나이다. 객체를 기반으로 개발을 한다고 할 때는 그 객체가 가지는 속성을 잘 활용을 해야 한다. 객체를 가지고 여러가지 관점으로 이용할 수 있어야 한다. 객체를 지정하고 한번만 사용하고 약간 내용이 바뀐 것을 다시 객체를 만들어서 해야 한다면 비효율적이다. 오버로딩과 오버라이딩은 재사용관점으로 이해해도 된다. 오버로딩은 함수를 호출 할 때 동일한 이름의 함수로 정의 하되 인자의 값을 형태나 개수를 달리하는 것이다. 그리고 호출 할 때 인자의 값이나 개수를 넣으면 알아서 해당 함수로 불리는 것이다. 편리성도 있고, 재사용성도 있다. 오버라이딩은 상속 개념을 이해해야 한다. 상속도 객체 지향의 중요한 개념 중 하나이다. 상속을 하여 재사용을 한다. 예를.. 더보기
애자일 방법론, 방법론 테일러링 애자일 방법론도 어쩌면 개발방법론에 집중하기 보다는 개발에 집중하다 보니 나오게 된 방법론의 혁식적인 변화일 것이다. 애자일이라는 것은 민첩함 정도, 그렇다고 애자일 방법론을 민첩하게 개발하는 것 정도로 생각하고 해석하기에는 애자일이 가지는 의미는 매우 넓다. 대부분의 방법론은 제조에서 나온 것으로 보인다. 물론 PMP와 같은 프로젝트 관리 자격증은 건축에서 나왔다고 한다. 제조나 건축 무엇을 만드는 것에 대해서는 소프트웨어나 하드웨어도 관리가 필요하고 방법론이 필요하다는 측면으로 일맥상통한 면이 있을 것이다. Why? 애자일일까? 두가지 시대적 상황의 만남으로 보인다. 말그래로 민첩한 대응이 필요했다. 소프트웨어가 가지는 가장 큰 장점일 수도 있다. 바로바로 반영이 가능하다는 점. 자동차 생산관련해서 .. 더보기
CBD방법론의 컴포넌트란? Component Based Development 방법론이다. 개발 방법론은 여러가지가 있다. 컴포넌트 기반으로 개발을 한다는 것이다. 컴포넌트는 무엇일까? 프로그램의 기본 단위는 함수라고 할 수 있다. 함수도 어떤 기능을 한다. 모듈이 있다. 모듈도 기능을 하는 것인데, 함수들의 집합이다. 함수들이 어떤 순서로 동작이 되면서 기능을 하는 것이다. 모듈은 꽤 큰 기능을 표현할 때 사용한다. 결제 모듈, 화면 모듈 서버 모듈, 이런식의 표현을 사용쓴다. 그리고 모듈들을 여러개 모이되 주제를 기반으로 모인 것을 컴포넌트라고 한다. 컴포넌트는 꽤 큰 주제인데, 이 아래 여러개의 모듈이 있을 수 있다. 컴포넌트 베이스 개발 방법론의 취지는 주제별로 독립적으로 개발을 하고 서로 다른 컴포넌트 간의 상관 관계를 줄.. 더보기
플랫폼! 기차 기다리는 곳이 플랫폼 플랫폼 들어본 듯하지만, 막상 설명하긴 좀 어려운 말이다. 무엇을 플랫폼이라고 할까? 카카오톡이 플랫폼일까? 네이버가 플랫폼일까? 카카오톡이나 네이버는 서비스라고 한다. 서비스에 더 가깝다. 플랫폼은 뭘까? 기차들이 오가고 역에 멈춘다. 역에 보면 기차가 멈춰서 사람들이 탑승하는 곳이 있다. 여기가 플랫폼이다. 플랫폼은 기차가 머무르는 곳이고, 사람들이 탑승하는 곳이다. 플랫폼 자체가 서비스는 아니다. 서비스를 위한 기반은 될 수 있다. 카카오 자체가 여러가지 서비스를 품고 있다. 서비스라고 보는게 맞지만, 그 안에는 여러가지 플랫폼이 기반을 이루고 있다. 플랫폼 사업을 한다고 하는데, 이는 특정 서비스를 만든다기 보다는 서비스들을 만들기 위한 또는 서비스에 필요한 기능들을 제공하는 것이다. 서비스들이 .. 더보기
DevOps는 시너지이다. DevOps는 Development와 Operation의 합성어이다. 개발과 운영 함께 잘해보겠다는 것이다. 왜 이런 개념이 나왔을까? 원래 구축을 하고 운영으로 인수인계를 한다. 구축하는 사람들을 개발팀이라고 부르고, 그 구축된 시스템을 운영해주고 유지보수 해주는 팀을 운영팀이라고 부른다. 소프트웨어 개발은 사람이 하기에 사람에 대한 이해가 필요하다. 각각 소속된 사람은 어떤 심리를 가지고 있을까? 구축팀은 어떻게든 납기 내에 고객이 원하는 시스템을 구축을 해야 한다. 부실공사라고 하더라도 목에 칼이 들어와도 일정 준수가 목표이다. 조금 불편한 정도는 내가 알바가 아니다. 목숨걸로 일정을 준수하려고 한다. 운영팀의 느낌은 어떨까? 어떤 사람들이 무언가 시스템을 만들었는데, 개떡 같은 느낌이다. 운영을 .. 더보기
분리 발주 분할 발주 차이가 모꼬? 분리 분할 발주는 프로젝트는 원청, 시행코자 하는 회사는 분리와 분할 발주의 차이는 두가지 모두 '을' 또는 '병정' 입장을 좀더 생각하는 것이 소프트웨어 업계는 오랜동안 병정 놀이를 해왔다. 지금도 그러고 있다. 분리 발주는 소프트웨어 분리를 발주는 하는 것이다. 하드웨어 납품업체, 또는 솔루션 납품업체가 원청에 독자적으로 납품을 하는 것이다. 이를 전체 통으로 한 SI업체에 주고 그 SI업체가 하드웨어 납품업체, 솔루션 납품업체 이런식으로 끼고 들어오는 것이 아니라 발주 자체를 별도로 분리하는 것이다. 이러므로써 대형 SI업체의 횡포를 막고, 중간에 챙겨가는 마진도 줄이는 효과들이 있다. 물론 전체를 책임질 수 있는 범위가 아니게 되면서 이슈나 문제 발생 가능성이 있지만, 사실 각각의 하드웨어나 솔루.. 더보기
프로젝트 관리에는 정답이 없다. 프로젝트 관리에 답은 없다고 생각한다. 프로그램가 원하는 목표를 달성하면 된다. 그럼 어떻게 관리할 것인가? 원칙의 문제일 것이다. 사실 사람이 핵심인데, 이 이야기는 다음에 언급하고, 일단 프로젝트 관리의 원칙적인 얘기들을 하려고 한다. - 일정관리, 범위 관리, 원가 관리, 품질 관리, 인력 관리, 의사소통 관리, 위험 관리 이러한 것들을 관리해야 한다. 일정 관리는 기본이다. 언제까지 일을 마쳐서 납품을 해야 한다는 것이다. 일정은 어떻게 알 수 있을까? 해보지 않은 일을 얼마가 걸지 사실 예측이 어려운 것이다. 프로그램을 개발하는 일정에는 함정이 있다. 보통 개발 일정을 잡으라고 하면 코딩 시간으로 착각을 한다. 개발자들은 대개 그렇다. 매니저는 그렇게 생각하면 안된다. 그리고 스튜던트 효과가 있.. 더보기
페어 프로그래밍은 어메리칸 스타일 우리말로는 어색하지만, 짝 프로그램이라고 한다. 둘이서 같이 개발을 하는 것이다. 둘 중 한사람이 코드를 잡고, 한 사람은 옆에서 같이 코드를 보면서 개발을 한다. 형식이 있다기 보다는 두사람이 한다는 자체이다. 그럼 왜 두사람이 개발을 하는가? 한사람씩 나눠서 개발을 하면 더 생산성이 높을거 같은데 말이다. 일단 페어 프로그래밍은 생산성을 위한 것은 아니다. 프로그램의 코드 품질, 사전 오류 검출, 실수 방지등의 목적이다. 개발자가 혼자 하다보면 귀찮을때가 많다. Copy & Paste로 개발을 하게 된다. 일단 기능만 되면 되니 남들이 안볼 때 후딱 개발을 하고 놀고 싶다. 하지만 옆에서 누군가 본다면 양심적으로다가 그리고 자존심 상 심한 Copy & Paste를 할 수는 없고, 어떻게 하면 구조적일.. 더보기
리팩토링 is 리모델링 리팩토링은 다시 구조화 하는 것이다. 건물로 비유하면 리모델링 정도라고 보면 될거 같다. 보통 개발자들은 남들이 짜놓은 코드를 보면 코드가 엉망이라고 다시 짜야 한다고 한다. 대개는 다시 처음부터 짜고 그 복잡한 기능들을 구현하다보면 다시 스파게티 코드가 된다. (스파게티 코드라는 말을 쓴다. 엉망진창이라는 뜻이다.) 그러면 다른 누군가는 말을 한다. 다시 처음부터 짜야 한다고 역사는 반복된다고 했던가 그러면 건축물로 치면 처음부터 다시 짠다는 의미는 무너뜨린다는 것이다. 그리고 다시 짜는 것이다. 과연 효율적일까? 왜 그렇게 복잡한 코드가 되었을까 생각해보면 그럴만한 사연이 있기도 하다. 그러면 무엇이 좋을까? 개발을 처음할 때는 몰랐던 사실을 기능을 구현하고 나니 알았다면 알고 났을 때 어떤 구조가 .. 더보기
소프트웨어 테스트 위상이 높아진 까닭은 소프트웨어를 테스트하는 방법은 여러가지가 있을 수 있다. 기능를 하는 단위 테스트, 여러가지 조합해보는 통합 테스트, 성능 테스트, 보안 사항에 위배가 없는지 해킹 우려가 없는지도 테스트이다. 기본적인 기능에 문제가 없는 단위별 테스트가 단위테스트이다. 개발자가 기본적으로 자기만 개발한 프로그램에 대한 테스트를 해야 한다. 그래서 유닛테스트라고 하고 개발자들이 코드를 개발하는 곳에서 테스트를 할 수 있게 기본적으로 어떤 함수를 만들때 입력과 출력에 대해서 검증하는 것이다. 함수를 만들고 어떤 기능을 동작하게 했다면 입력에 따른 기대 출력값이 있을 것이다. 이것을 검증한 후에는 연결되었을 때 오류가 없는지 봐야 한다. 기능들이 조합되었을 때 예상치 못한 결과가 있을지 모르니 확인해봐야 한다. 통합 테스트를.. 더보기
객체지향을 쉽게 설명하면 객체지향이라는 말은 객체를 지향한다는 의미이다. 객체를 지향하는 것이 무슨 말일까? 그렇다면 이 전에는 무엇을 지향했을까? 프로그램은 순차적인 진행 절차를 가지고 개발이 되어왔다. 어떤 기능이 동작하기 위한 로직들이 수행되는 것이다. 이것만 놓고 보면 객체지향이라고 할 수는 없다. 순차적 프로그래밍이다. 순차적 프로그램 당시 무언가를 지향한다고는 하지 않았다. 객체지향이 나오면서 기존 순차적 또는 절차적인 순서가 아닌 방향이 된 것이다. '객체 지향이라는 개념이다. 객체 지향 개념은 객체를 지향했다는 것인데, C언어의 경우는 순차적인 프로그램을 만들었다. C++의 경우에는 객체가 중심이 된다. 객체라는 개념부터 이해를 해야 할텐데, 객체는 우리 주변에 모든 것이라고 할 정도로 모든 것이 객체로 되어 있다.. 더보기
소프트웨어 아키텍쳐는 정답이 없다? 아키텍쳐는 건물로 치면 구조물을 어떤식으로 만들 것인가 이다. 디자인은 건물의 외관이 어떤 외곽을 가지며 어떤식의 색깔과 분위기를 연출할지라면 소프트웨어에서도 비슷하다. 사용자가 접하고 있는 부분의 느낌이나 선, 색들을 정하고 꾸미는 것이다. 아키텍쳐는 순수한 그림 안에 어떤식으로 구조화 할지에 대한 부분이다. 건물 구조를 단순하게 사각형으로 할지, 층을 몇층으로 할지, 층간은 어떤식으로 구성할지, 두개의 건물을 나란히 건축한다고 할 때 중간쯤에 연결 통로를 만들지 이것이 효과적일지, 의미가 있을지 등을 고민한다. 아키텍쳐는 바뀔 수가 있다. 정답이 없을 수도 있다. 가장 좋은 안을 찾아가는 것이다. 디자인 안에서 기능들을 수행하는 것의 틀을 만드는 것이다. 아키텍쳐를 설계한다는 것은 가장 좋은 방법을 .. 더보기
소프트웨어 설계 vs 건축물 설계 설계라는 것은 그림을 그리는 것이다. 건축물로 치면 설계도를 그리는 것이다. 설계도는 건축물을 만들기 위한 모든 것이 담겨져 있다. 그림으로 표시도 되어 있고, 수치로도 표시가 되어 있다. 어떤 건축물을 만들지를 알 수가 있다. 건축물에도 조망도가 있고, 상세하게 층마다 어떻게 지어질지가 나타나있는 세부 설계도가 있다. 건물을 보면 우리는 계단을 올라가서 보이는 공간이 다이지만, 사실 건물을 건축할 때 고려되어야 할 것은 대단히 많다. 전기 설비가 어떻게 될지, 선은 어떻게 들어갈지, 수도는 어떻게 배관되어야 할지, 공기는 어떤식으로 흘러가는지, 각 구역들은 어떤 식으로 사용이 될지 세부적으로 1mm까지 표시가 되어 있는 설계도 필요하다. 소프트웨서 설계에도 대략적으로 컨셉을 보여줄 수 있는 기획 문서가.. 더보기
개발방법론 그리고 요구공학 개발 방법론은 여러가지가 있다. 개발을 어떻게 할 것인가의 문제인데, 과거 전통적인 방법론은 폭포수 방법론이였다. 폭포가 떨어지듯 순차적으로 개발을 진행하는 것이다. 기획 - 분석, 설계 - 개발 - 테스트 이 순서는 전통적인 개발의 순서이다. 어떤 것을 만들지 고민하고, 인터페이스라든가 기능을 설계하고, 해당하는 기능을 만들고 테스트하는 것이다. 이 방법이 많이 변하였고, 어떤 것이 맞다기 보다는 방법론의 변화에 대한 이해가 필요하다. 방법론은 정답이라는 개념이 아니라 좋은 것을 선택하는 문제이다. 건축이라면 아마도 설계도를 그리는 것이 공정상에 가장 중요할지 모른다. 설계가 잘못되었다면 아무리 건축물을 열심히 지어도 붕괴의 위험이나 잘못을 돌이킬 수 없기 때문이다. 시스템 개발에 대해서도 기획, 분석.. 더보기
앱 개발 어떻게 하지? 프로그램을 개발한다는 것은 어떤 기능들을 가진 것을 만드는 것이다. 프로그램 개발 자체는 절차를 만들고, 특정 기능이 불려지면 해당 기능에 맞게 로직을 만드는 것이다. 어떤 프로그램을 만드느냐에 따라서 약간씩은 방법이 달라질 수 있다. 예를 들면 앱을 개발한다고 하면 어떤 앱을 개발을 할지 생각하는 것이다. 그 앱은 어떤 화면을 가질 지 생각해본다. 그리고 그 화면을 대략 그려본다. 종이에 그리는 것도 좋다. 그리고 그 화면에는 어떤 기능이 있는지 생각해본다. 그 기능들을 만들기 위해서 어떤 로직이 필요한지 생각해본다. 개발을 한다는 것이 로직을 구현하는 것에 가장 밀접하지만 이런 일련의 과정 모두가 개발의 범주에 속한다. 그리고 기능을 개발하기 위해서는 어떻게 만들 수 있을까를 생각하는 것이다. 그리고.. 더보기
XML 그리고 JSON XML은 시스템의 데이터 표현에서 가장 많이 사용하는 방식이다. 웹브라우저의 탄생이후 표준적으로 사용한 언어은 HTML이다. 프로그램언어라기 보다는 Markup Language 표현하는 언어이다. HTML은 로직도 없고, 글자를 또는 표를 그리기 위한 다양한 태그만이 존재한다. HTML은 한정된 태그를 가지고 있다. 물론 HTML로 대부분의 화면을 만들어낼 수 있지만, 확장성이 용이하지 않다는 단점이 있다. 확장성이라는 것은 새로운 태그를 만들어내는 기능을 통해서 무한한 확장이 가능하도록 하였다. 이 언어가 XML이다. X가 eXtensible 이다. 동일하게 Markup Language이고 확장 가능한 형태로 만든 것이다. 필요에 의해서 새로운 태그를 추가할 수가 있다. 그 추가된 태그를 정의하는 파일.. 더보기
오픈소스는 소스 오픈? 왜? 오픈소스는 말그대로 소스를 오픈한 것이다. 오픈 소스의 말이 어렵다기 보다는 왜 오픈을 했을까에 관심을 둘 필요가 있다. 왜 오픈인가? 플랫폼을 오픈 것에 대해서는 이해하기 쉽다. 오픈을 함으로써 플랫폼을 많이 사용하고, 플랫폼 사용자가 많으면 그 플랫폼은 가치가 생긴다. 쉽게 말하면 중고나라라는 카페를 만든 사람은 제공자 입장이고, 수고스러움을 통해서 많은 사람들에게 중고거래의 터를 만들어줬지만, 결국 사람들이 많이 이용함으로써 수혜를 입게 된다. 광고를 싣을 수도 있고, 특정 상품들을 공동구매를 추진할 수도 있다. 플랫폼의 오픈은 자연스러운 과정이다. 그런데, 소스를 오픈한다는 것은 어떤 의미일까? 소스의 오픈도 자연스러운 참여를 기대한 부분이 있었다. 리눅스의 눈부신 발전 안드로이드의 발전등 모두 .. 더보기
웹서비스 vs 웹사이트 웹서비스를 웹사이트를 통한 서비스와 혼동을 할 수 있다. 웹사이트로 서비스를 해도 웹서비스라고 부를 수는 있을 것이다. 하지만 웹서비스라고 하면 특정 프로토콜을 가지고 서비스 하는 방식을 의미한다. 서버는 특정기능을 제공할 때 방식을 표준화하여 필요로 하는 기능을 제공받고, 제공해주는 개념이다. 지금의 오픈 API 정도의 이전 그리고 특화된 버전이라고 생각하면 이해가 쉽다. 오픈 API는 대외적으로 API를 오픈하여 사용할 수 있게 해주는 기능이다. 날씨 API라고 하면 해당 API를 호출하면 날씨 정보를 얻을 수 있다. 버스 관련 API라고 하면 버스의 위치 정보라든가 버스의 배차 정보를 알 수 있다. 위치도 알 수 있는 API도 제공한다. 이러한 정보를 기반으로 또 다른 서비스를 만들 수도 있다. 이.. 더보기
.NET 운영체제에 대해서 .NET은 마이크로소프트의 운영체제 계열이다. 계열이라고 표현한 이유는 그 이전 버전은 .NET이라는 이름이 아니라 NT라는 이름을 사용하였다. NT 이전에는 윈도우 OS를 사용하였다. 윈도우는 마이크로소프트의 빌게이츠에 의해서 만들어졌다. 빌게이츠는 DOS라는 운영체제 부터 만들었고, 이 운영체제의 목적은 개인용 컴퓨터의 운영체제였다. 이 말은 산업용, 기업용의 운영체제는 존재했다는 의미이고, 대중성을 위해서 만든 것이다. 꼭 대중성을 위했을까라는 생각은 들긴 하지만, 현재 사람들이 DOS라는 운영체제는 사용하지 않을 수 있지만, 윈도우라는 운영체제는 개인용 컴퓨터에서 가장 많이 사용하고 있다. 마이크로소프트는 개인용에 맞는 운영체제를 만들었다. 이로 인해서 운영체제중에서 가장 익숙하고 유명한 것이 윈.. 더보기
Java 기반 서버 - J2EE J2EE는 Java로 만들어지는 서버 기반 프로그램이다. 약어는 Java 2 Enterprise Edition인데, 이름이 갖지는 고유한 의미보다는 버전 정도를 나타낸다. 한때 전산시스템 도입시 고려되어졌고, 많이 적용되었던 형태이다. 전산을 보면 유행이 있는 것같다. 최근 유행이야 말할 것도 없이 빅데이터, 머신러닝, 인공지능일것이다. 빅데이터를 이미 업계에 한번 지나간 것이고, 이러한 키워드들도 유행을 가지고 있는거 같다. 분산환경으로 했다가 중앙 집중식으로 하고 클라이언트를 가볍게 하기도 하고, 클라이언트의 비중으로 높이기도 하고, 가볍게 하기도 하고, P2P라는 개념으로 클라이언트가 서버의 일부 기능을 포함하기도 하고, 서버 기반의 기업용 서버 개발에 많이 사용되어졌다. 개발이 용이하진 않고, 난.. 더보기
서버사이드 스크립트란? Server Side Script(JSP, ASP, PHP) 서버 편 스크립트이다. 서버 클라이언트 개념을 살짝 언급하면 서버는 어딘가 존재하는 클라이언트를 대응하는 프로그램이고, 클라이언트는 내가 보고 있는 프로그램이다. 내가 보고 있는 브라우저가 클라이언트이다. 내가 보고 있는 스마트폰앱이 클라이언트이다. 요즘은 컴퓨터에서만 또는 스마트폰에서만 동작되는 프로그램은 거의 없다고 생각된다. 시계앱이라든가 계산기 정도가 아닐지, 시계앱도 요즘은 다양한 앱들이 많아서 서버 연동될 가능성이 높아보인다. 서버와 클라이언트는 상호 통신을 한다. 브라우저를 켜고 특정 웹사이트에 접속을 하려고 하면 클라이언트에서 요청이 서버로 가고, 서버에서 해당 페이지를 응답해준다. 서버와 클라이언트가 통신을 한다. 이때 서버측에 있는 프로그램을 서버 사이드 프로그램이라고 한다. 서버 사이.. 더보기
jQuery는 무엇인가? 자바스크립트는 쉽다? jQuery는 이름만 봐서는 뭔가 쿼리를 할거 같아서 DB관련된 것이 아니냐 싶기도 한데, jQuery는 Javascript 라이브러리로 생각하면 된다. 물론 DB관련된 기능도 사용할 수 있기는 하다. 하지만 Query라는 선입견을 가질 필요는 없다. 자바스크립에서 유용하게 사용할만한 것들을 모아두고, 또 사용이 편리하게 한 개발 라이브러리이다. Javascript도 매우 접근이 쉬운 언어이지만, 처음부터 개발을 한다고 하면 준비해야 할 것들이 많을 것이다. 사용할 법 한 기능들을 미리 만들어둔다면 유용할 것이다. 자바스크립트에 대해서 자꾸 쉽다고 표현을 했지만, 이에 대한 오해는 없었으면 한다. 자바스크립트가 접근이 쉽다는 것이지 그 언어 자체가 너무 쉽다는 뜻은 아니다. 자바스크립트도 한편으로는 매우.. 더보기