본문 바로가기

개념

클라우드 서비스 개념 및 5년 경험, 무료 사용 방법, 환불 방법 클라우드 개념 처음이신 분들, 클라우드 서비스 경험 아마존 AWS 서비스 Free Tier 주의 할 점 ! , 환불 받는 법 클라우드 거의 무료로 사용하는 방법, 5년간 서버 비용 없이 유지한 경험 인프라 비용 사례, 앱 잘되도 망한 케이스 클라우드 시작하시는 분들 꼭 보고 참고하세요! 주변 사례 및 제가 경험한거 다 말씀드릴께요~! https://youtu.be/30dq74WiJJg 더보기
HTML5, 기존 HTML과 무슨 차이일까? HTML에 갑자기 5가 붙으면서 뭔가 많이 바뀐 듯한 느낌을 준다. 무슨 차이일까? 태그, 속도? HTML5도 HTML을 근간으로 한다. HTML태그라는 것들을 모임이고, 일종의 스크립트 언어이다. 가장 중요하고 특징적인 발전은 Socket 일 것이다. Socket은 통신에서 사용된다. 네트워크에서 통신을 할 때 Socket을 만들고, 그 Socket을 통해서 데이터를 주고 받는다. 서버와 클라이언트간의 통신을 한다고 했을 때 서버와 클라이언이언트에 각각 Socket이 생성되고, 이 Socket은 통신을 하기 위한 주체가 된다. 이것이 HTML상에서 구현가능하도록 만들어진 것이다. 왜 획기적이고, 큰 변화일까? 그것은 HTML이 동작되는 원리에서 생각해볼 수 있다. HTML은 홈페이지, 웹사이트의 컨텐츠.. 더보기
압축의 원리 간단하게 압축이라는 것은 흔하게 많이 접해본 말이다. 원래 크기보다 줄인다라는 의미이다. 어떻게 하면 원래 크기보다 줄일 수 있을까? 압축이 되는 것이 무엇이 있을까? 원리는 무엇인가? 일반 생활에서 압축은 여유 있는 공간을 줄임으로 압축이 될 것이다. 압축을 하는 것은 부피를 줄이는 것이다. 컴퓨터에서의 압축의 대상은 파일이다. 파일의 크기를 줄이는 것이다. 예전에는 파일의 크기를 줄일 필요성이 더 컸다. 디스크 용량도 부족하고 네트워크 속도도 느리기때문에 줄여야 이동도 가능하고, 전송도 가능했다. 그래서 여러가지 압축 기술들이 나오기 시작했다. 외국 제품들이 많이 나왔는데, RAR, ZIP 이런 확장 파일을 갖는 파일들을 만들어주고, 해당 압축된 파일을 풀어주었다. 우리나라에서는 대표적으로 알집이 있었다. 알.. 더보기
TCP/IP의 시작 인터넷의 시초는 1969년 미국 국방성의 연구로부터 시작됐다. 기술 발전은 전쟁, 포르노 산업등에서 시작됨은 공공연한 사실이다. 그리 유쾌한 일은 아니지만, 사람들의 필요에 의해서 출발하고 그것이 사업이 되었을 것이다. 아파넷이라고 불리었고, 대학 연구기간과에서 실험적으로 시작이 되었고, 서로간의 통신을 위해서 시작이 되었다. 아파넷은 점점 커지기 시작했다. 그런데, 상호간의 접속을 위한 프로토콜(일종의 약속)이 필요했고, 이를 위해서 1982년 OSI라는 프로토콜이 만들어졌다. 그런데, 표준규약이 또는 통신사들이 내세우는 표준이라는 것이 뒤떨어지고 또는 너무 무겁기 때문에 실제로는 사용을 안하듯이 이 표준을 뒤로 하고 TCP/IP표준이 더 많이 사용하게 되었다. TCP/IP 프로토콜도 OSI 7 lay.. 더보기
캐시(Cache) 개념과 원리 캐시는 종종 듣게 된다. 캐시 된 거 아니야? 라는 말을 하기도 하고, 캐시 되어 있어서 빠른거야 라는 말을 하기도 한다. 캐시는 잠시 저장해둔다는 의미이고 기능이다. 캐시 메모리라고 하면 실제 메모리와 CPU 사이에서 빠르게 전달을 위해서 미리 데이터들을 저장해두는 좀더 빠른 메모리이다. 네트워크에서 캐시는 로컬에 파일을 미리 받아놓고, 그 내용을 보거나 웹서버에서도 매번 로딩을 해야 하는 파일들을 미리 로딩해두고, 응답을 주기도 한다. 데이터 베이스를 매번 확인해야 하는것도 캐시서버를 이용한다면 빠른 응답을 해줄 수 있다. 캐시의 원리를 이용한 캐시 서버를 활용하여 CDN같은 서비스도 할 수 있다. CDN은 컨텐츠를 딜리버리 해주는 서버이다. 아주 먼곳에 있는 파일을 매번 가져와야 한다면 네트워크 구.. 더보기
배열을 선언한다는 것은 데이터를 연결하여 저장한다는 개념은 자료구조 상에서 필요하다. 1에서 100까지를 저장한다고 했을 때 여러가지 형태로 저장을 할 수 있다. 변수를 100개 선언할 수도 있다. 가장 쉽게 접근하는 방식이 배열이다. 100개의 저장소를 선언하고 숫자를 각각 저장소에 저장한다. 변수를 100개 선언했다면 물리적인 저장 공간의 위치가 어디 일지 모르고, 연결 여부도 알 수 없다. 대부분은 비슷한 위치일 수 있지만, 꼭 그렇다고 할 수는 없다. 배열은 물리적 공간도 바로 옆으로 메모리 공간을 확보한다. 이런 배열의 물리적 공간 확보로 빠른 엑세스를 보장 받을 수 있다. 단점은 그 공간만큼은 미리 확보하고 사용하기에 혹시 사용하지 않더라도 다른 변수들이 쓸 수 없기에 비효율적인 부분이 있을 수 있다. 배열은 그리고.. 더보기
컴퓨터 통신 방식 중 동기/비동기란 컴퓨터에서 사용하는 용어 중 동기와 비동기가 있다. 이 중 비동기라는 한글은 영어로 Asynchronous라고 영어로 표기한다. Asynchronous는 대표적으로 Ajax라는 기술의 첫번째 약자에서 사용된다. Ajax(Asynchronous Javascript XML)인데, 이 기술의 특징을 보면 비동기의 의미를 쉽게 알 수 있다. 홈페이지에 접속을 했는데, UI나 테이블 또는 이미지는 그대로 있고, 물론 이미지 갱신도 포함하여 페이지 로딩 시 데이터를 별도로 가져오는 기술이다. API 호출 등을 하여 응답을 받고 표시할 수 있다. 현상적으로 몇가지 얘길 해보면 과거 메뉴나 페이지 넘기기 같은 것을 하면 전체 페이지가 리로딩되어야 했다. 그럼으로써 새로 받은 데이터를 표시해줄 수가 있었다. 최근 보면 .. 더보기
클라우드 컴퓨팅의 활용 사례 클라우드 컴퓨팅을 이용할 수 있는 분야는 전분야라고도 할 수 있다. B2C, 엔터프라이즈 분야, 공공분야, 신사업, IoT 서비스 가능도 가능하다. 물론 기업의 기존 시스템들도 클라우드 환경에서 서비스할 수 있다. 대표적으로 어떤 기능들을 통해서 효과를 낼 수 있는 생각해보면 CDN이 이용이 가능하다. CDN은 Content Delivery Network이다. 대용량 파일이나 이미지 파일들을 빠른 속도로 전파하기 좋다. 이러한 파일 전파에 특화된 서비스이다. 이를 통해서 게임서비스 같은 곳에서 업데이트 시에 파일을 올려두고 단말로 내려받기를 할 수 있으니 쉽게 배포가 가능하다. CDN은 네트워크를 구간별로 특화 시켜서 빠른 속도를 보장하기도 하지만, 일반적으로는 캐시 서버라고 해서 원본 파일을 미리 해당.. 더보기
API (Application Program Interface) 그리고 OpenAPI 어플리케이션을 개발할 때 이 API로 개발을 한다. 어플리케이션에서 또는 플랫폼에서 API를 제공한다. 그 API를 사용해서 프로그램을 개발할 수가 있다. API는 인터페이스이고, 그 것을 호출한다고 하는데, 부르면 해당 API가 실행된다. 프로그램 내부에서만 사용을 했다면 함수가 될 수 있다. 하지만 외부에서 그 함수를 호출하려면 인터페이스가 필요한데, 이 인터페이스를 API라고 한다. 외부에서 부를 수 있는 함수라고 보면 된다. 물론 실제 단일 함수가 아니라 API를 호출하게 되면 어떤 기능을 수행하기 위해서 내부적으로는 여러가지 함수를 호출할 수 있다. 윈도우 프로그램을 만들때는 API를 이용한다. API 기능 중에는 윈도우를 제어 할 수 있는 기능들도 있고, 화면에 표현을 해주는 API도 있다. .. 더보기
SaaS vs PaaS vs IaaS SaaS는 Software as a Service이다. 기존 방식으로 보면 소프트웨어는 구매를 해서 설치하고 사용을 했다. 장점과 단점이 존재할 수 있다. 일시에 구매를 해야 한다는 점이 그리고 사용하지 않을 수도 있다는 점등에서 진입 장벽이 높았을 수도 있다. SaaS는 소프트웨어를 서비스방식으로 제공한다는 취지이다. 과거 마이크로 소프트 워드 제품을 구매해서 사용해야 했다면 구매 당시에 비싼 제품 비용을 내야 하는 단점과 생각했던 거보다 많이 사용하지 않을 수 있는 리스크가 있다. 이를 제공처에서 한번의 라이센스 구매가 아니라 사용시에 비용을 지불하는 식으로 제공하는 것이다. 그리고 설치방식이 아니라 스트리밍 방식으로 서비스 처럼 제공을 한다. 그리고 데이터도 서버에 저장할 수 있다. 물론 서버는 개.. 더보기
클라우드 컴퓨팅이란? 장점은? 클라우드 컴퓨팅은 클라우드라는 말은 구름이라는 뜻에서 나왔다. 어딘가 존재하는 컴퓨터들이다. 어딘가는 존재한다. 하지만 구지 우리가 알아야 하는 것은 아닌 개념이다. 물리적으로 어떻게 구성되어 있는지 몰라도 된다. 모른다는 것은 큰 리스크이기도 하지만, 편리함을 주는 부분도 있다. 과거 서버 하나를 구입해서 운영을 하는 것까지는 큰 비용과 시간이 들었다. 클라우드 컴퓨팅은 이미 준비되어 있고, 그것을 바로 이용할 수 있다. 서버를 구입하는 것은 매우 큰 돈이 든다. 수천만원에서 수억까지 투자를 해야 서버를 구입할 수 있다. 하지만 클라우드는 몇만원부터 시작이 가능하다. 잘만 이용하면 Free Tier 같은 혜택을 통해서 매우 저렴하게 운영을 할 수도 있다. 편리함과 비용측면이 있는데, 보안 관점에서 우려.. 더보기
인터넷의 탄생과 원리 인터넷의 탄생은 역시 국방의 통신에서 시작되었다. 웹사이트는 기존 텍스트 기반의 인터넷에서 이미지를 포함하면서도 화려한 페이지가 만들어지는 HTML 기반의 문서형태로 이미지의 활발한 송수신을 야기했다. 초반 기업 홈페이지로 가장 많이 사용되었다. 모든 기업이 URL이라는 것을 가지기 시작했다. URL은 일종의 주소이다. 인터넷 공간의 주소이다. Uniform Resource Locator이다. 인터넷 주소를 가리키기 위한 규칙이다. http://로 시작하는 부분은 프로토콜을 의미한다. 프로토콜은 통신을 위한 상호간의 약속이다. http:// 프로토콜외에도 ftp도 있고, 여러가지 프로토콜이 존재한다. 요청과 응답의 약속을 정해둔 것이다. 그리고 주소는 http:// 이후에 시작된다. www.ooo.com.. 더보기
운영 수준 정의 - SLA 서비스 레벨 동의라고 해석되어지는데, 이는 IT 계약 할 때 운영을 맡게 되는 경우 그 시스템이 어느 정도 영속성을 가지고, 장애는 어느 정도까지 허용된다라고 하는 운영의 수준에 대한 부분의 협의 내용이다. 여기에는 서비스가 잘되면 어떤 보상을 주고, 서비스가 특정 시간 이상 안될 수에는 벌금을 물겠다는 내용이 포함된다. 수행 업체는 그 책임을 어느정도를 져야 하는데, 그 책임을 지고 운영을 하겠다는 것을 말로만 하는 것이 아니라 실제 부속계약으로 금전적 내용을 포함한다. 대표적인 것이 서비스 가용율이다. 서버를 운영한다고 해도 대부분은 서버위에 동작되고 있는 서비스가 중요하다. 이 서비스가 얼마나 중단 없이 서비스를 하는 가가 운영 수행사가 책임 져야 할 내용일 것이다. 서비스 가용율은 관련된 수행 내.. 더보기
매번 헤깔리는 오버로딩, 오버라이딩 오버로딩과 오버라이딩은 기본적으로 객체 지향 개념 중 하나이다. 객체를 기반으로 개발을 한다고 할 때는 그 객체가 가지는 속성을 잘 활용을 해야 한다. 객체를 가지고 여러가지 관점으로 이용할 수 있어야 한다. 객체를 지정하고 한번만 사용하고 약간 내용이 바뀐 것을 다시 객체를 만들어서 해야 한다면 비효율적이다. 오버로딩과 오버라이딩은 재사용관점으로 이해해도 된다. 오버로딩은 함수를 호출 할 때 동일한 이름의 함수로 정의 하되 인자의 값을 형태나 개수를 달리하는 것이다. 그리고 호출 할 때 인자의 값이나 개수를 넣으면 알아서 해당 함수로 불리는 것이다. 편리성도 있고, 재사용성도 있다. 오버라이딩은 상속 개념을 이해해야 한다. 상속도 객체 지향의 중요한 개념 중 하나이다. 상속을 하여 재사용을 한다. 예를.. 더보기
CBD방법론의 컴포넌트란? Component Based Development 방법론이다. 개발 방법론은 여러가지가 있다. 컴포넌트 기반으로 개발을 한다는 것이다. 컴포넌트는 무엇일까? 프로그램의 기본 단위는 함수라고 할 수 있다. 함수도 어떤 기능을 한다. 모듈이 있다. 모듈도 기능을 하는 것인데, 함수들의 집합이다. 함수들이 어떤 순서로 동작이 되면서 기능을 하는 것이다. 모듈은 꽤 큰 기능을 표현할 때 사용한다. 결제 모듈, 화면 모듈 서버 모듈, 이런식의 표현을 사용쓴다. 그리고 모듈들을 여러개 모이되 주제를 기반으로 모인 것을 컴포넌트라고 한다. 컴포넌트는 꽤 큰 주제인데, 이 아래 여러개의 모듈이 있을 수 있다. 컴포넌트 베이스 개발 방법론의 취지는 주제별로 독립적으로 개발을 하고 서로 다른 컴포넌트 간의 상관 관계를 줄.. 더보기
DevOps는 시너지이다. DevOps는 Development와 Operation의 합성어이다. 개발과 운영 함께 잘해보겠다는 것이다. 왜 이런 개념이 나왔을까? 원래 구축을 하고 운영으로 인수인계를 한다. 구축하는 사람들을 개발팀이라고 부르고, 그 구축된 시스템을 운영해주고 유지보수 해주는 팀을 운영팀이라고 부른다. 소프트웨어 개발은 사람이 하기에 사람에 대한 이해가 필요하다. 각각 소속된 사람은 어떤 심리를 가지고 있을까? 구축팀은 어떻게든 납기 내에 고객이 원하는 시스템을 구축을 해야 한다. 부실공사라고 하더라도 목에 칼이 들어와도 일정 준수가 목표이다. 조금 불편한 정도는 내가 알바가 아니다. 목숨걸로 일정을 준수하려고 한다. 운영팀의 느낌은 어떨까? 어떤 사람들이 무언가 시스템을 만들었는데, 개떡 같은 느낌이다. 운영을 .. 더보기
프로젝트 관리에는 정답이 없다. 프로젝트 관리에 답은 없다고 생각한다. 프로그램가 원하는 목표를 달성하면 된다. 그럼 어떻게 관리할 것인가? 원칙의 문제일 것이다. 사실 사람이 핵심인데, 이 이야기는 다음에 언급하고, 일단 프로젝트 관리의 원칙적인 얘기들을 하려고 한다. - 일정관리, 범위 관리, 원가 관리, 품질 관리, 인력 관리, 의사소통 관리, 위험 관리 이러한 것들을 관리해야 한다. 일정 관리는 기본이다. 언제까지 일을 마쳐서 납품을 해야 한다는 것이다. 일정은 어떻게 알 수 있을까? 해보지 않은 일을 얼마가 걸지 사실 예측이 어려운 것이다. 프로그램을 개발하는 일정에는 함정이 있다. 보통 개발 일정을 잡으라고 하면 코딩 시간으로 착각을 한다. 개발자들은 대개 그렇다. 매니저는 그렇게 생각하면 안된다. 그리고 스튜던트 효과가 있.. 더보기
리팩토링 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도 제공한다. 이러한 정보를 기반으로 또 다른 서비스를 만들 수도 있다. 이.. 더보기
정렬 알고리즘을 쉽게 개념만 가장 많이 쓰여지고, 기본적인 알고리즘이 정렬이다. 정렬은 순서대로 나열하는 것이다. 순서대로 나열하는 것은 많은 곳에서 의미있게 사용되어질 수 있다. 정렬을 엑셀로 데이터를 만들다가도 쇼핑몰에서 판매량순으로도 본다고 했을 때 이것들이 정렬에 해당된다. 프로그램 내부적으로도 어떤 자료들을 정렬하여 검색을 하기도 하고, 저장을 하기도 한다. 순차적으로 만드는 것은 알고리즘 상에서 필요로 하는 과정이기도 한다. 그래서 순서를 정하는 것에도 알고리즘이 필요하다. 정렬 알고리즘이라고 하는데, 이 정렬 알고리즘에는 몇가지 방법이 있다. 버블 정렬 - 물방울이 물밑에서 보글보글 올라온다고 해서 버블 정렬이라고 한다. 퀵 정렬 - 빨리 정렬을 할 수 있다고 해서 퀵정렬이라고 한다. 이 방법은 정렬을 하고자 하는 수들.. 더보기