본문 바로가기

Developing

[개발 배포 환경 1] Docker란 Python을 비롯해서, Angular를 이용한 개발을 진행하다 보면 개발 환경과 운영 환경을 동일하게 유지하는 부분에 대해서 많은 고민을 하게 되었다. 그런 고민을 해결하기 위해서 Docker에 대한 Study가 필요했고 이를 위해 Docker에 대한 research 및 개발 배포 환경 적용에 대해 진행해해보면서 글을 써볼까 한다. Docker에 대한 이해를 위해서는 우선 container에 대한 이해가 필요하다. Container는 application과 그에 대한 의존성 라이브러리들을 캡슐화한 것이다. 어떻게 보면 Container는 VM(Virtual Machine)을 경량화한 것으로 생각하기 쉬운데..... VM과 마찬가지로 OS에서, application을 돌릴 수 있는 isolated 환경을.. 더보기
Apache Kafka - Consumer Messaging은 전통적으로 queuing과 publish-subscribe로 나눌 수 있다.Queue는 기존적인 자료 구조인 queue라고 보면 된다. Queue에서 데이터를 한번 읽으면 지워지게 된다. 그렇기 때문에, 여러개의 consumer가 한가지 queue를 읽을 경우, 각 consumer는 전체 데이터의 일부만 읽게 되는 것이다.Publish-subscribe는 message를 queue와는 달리 broadcast해서 모든 consumer에게 전달하는 것을 의미한다. 이런 경우에 여러개의 consumer가 동시에 전체 데이터를 다 읽을 수 있다.Apache Kafka의 경우 위에서 언급한 두가지 모델을 모두 포함하는 구조이다.Consumer가 같은 consumer group 안에 있게 되면 .. 더보기
JAVA Naming Convention Java는 작명 규칙(Naming convention)을 갖고 있으며, 이는 JLS(Java Language Specification, http://docs.oracle.com/javase/specs/)에 포함되어 있다. 작명 규칙은 글자 규칙(Typographical)과 문법 규칙(Grammatical)로 나뉜다. 1. Typographical Naming Convention - Pacakge : 컴포넌트 이름을 마침표로 구분하고 연결하여 계층적으로 구성한다. 소문자와 숫자로 구성되어야 한다. 보통 인터넷 도메인 이름을 거꾸로 뒤집어서 사용한다. 일반적으로 Package Name은 단일 단어로 구성해야 한다.- Class/Interface : 첫째 단어는 영문 대문자로 한다. 공통적인 약어는 사용 가능.. 더보기
네트워크 통신 프로토콜 정리 네트워크 통신 프로토콜을 정리한 이미지이다. 더보기
Ubuntu에 JDK 설치(업그레이드)하기 어렵지 않게 작업을 진행할 수 있다고 생각했다. 예전에는 Ubuntu에서 apt-get을 이용하면 편하게 설치할 수 있었지만 Oracle이 Java를 갖게 되고 나서... 이런 package 지원을 하지 않는다고 한다. 결국에는 oracle 홈페이지에서 jdk를 다운 받아서 설치하는 방법 밖에 없었다. 본 포스트는 아래와 같은 설치 환경에서 SSH(터미널)를 이용해서 설치를 진행할 것이다. 참고로 아래 과정은 JDK 처음 설치 뿐만 아니라 업그레이드의 경우에도 해당된다. 설치환경: ubuntu-11.10-desktop-i386 JDK: Java SE Development Kit 7u3 1. JDK를 다운 받는다.http://www.oracle.com 에서 다운 경로를 찾는다.현재는 Java SE에 해당되.. 더보기
Ubuntu Server 무선랜 설정 Ubuntu Server 설치후 무선랜을 설정할 필요가 있다. 우선 ifconfig 명령을 통해서 어떤 랜카드가 있는지를 확인할 수 있다.무선랜 카드가 설치 되있다면 다음과 같이 무선랜을 설정해 줄 수 있다.1. /etc/network/interfaces 파일 변경다음은 interfaces 설정 파일 일부이다. wlan0은 랜카드 이름이 된다.# The primary network interfaceauto wlan0iface wlan0 inet dhcp # wireless-* options are implemented by the wireless-tools package wireless-mode managed wireless-essid [이름] wireless-key1 [비번 헥사코드로 적는다] dhcp.. 더보기
데이터 단위 과거 몇년 전만 해도 기가바이트(Gigabyte)는 큰 단위 였다. 하지만 빅데이터라는 용어의 출현에서도 알수 있듯이 대량의 데이터가 쏟아져 나오는 시기가 되었다. IDC에서는 2006년에 0.18제타 바이트 2011년에는 1.8제타 바이트의 데이터가 세계에 존재한다고 예측했다고 한다. 본 포스트에서는 간략하게 데이터 단위를 정리해보고자 하나. Bit(비트) Byte(바이트)=8 bit Kilobyte(킬로)=10^3 byte Megabyte(메가)=10^6 byte Gigabyte(기가)=10^9 byte Terabyte(테라)=10^12 byte Pettabyte(페타)=10^15 byte Exabyte(엑사)=10^18 byte Zettabyte(제타)=10^21 byte Yottabyte(요타)=.. 더보기
MySQL 설치 실행 - CentOS 본 포스트에서는 전세계인이 즐겨쓰는 RDB인 MySQL을 CentOS에서 설치 및 실행하는 방법에 대해서 설명하고자 한다. 설치 및 실행 환경은 다음과 같다. OS : CentOS - 5.7 (32bit) MySQL : 5.5.16 우선 MySQL 홈페이지에 들어가서 MySQL을 다운 받는다. http://dev.mysql.com/downloads CentOS의 경우 RedHat 계열이므로 RedHat에서 사용하는 RPM을 이용해서 설치하도록 하겠다.(Source Code와 Binary 설치 과정은 많이 나와있으므로 생략하겠다. - MySQL 홈페이지에는 Binary 파일은 이제 업로드 되지 않는듯하다...) wget 명령어를 이용해서 MySQL을 다운 받는다. #wget http://dev.mysql... 더보기
리눅스 종류 리눅스 종류 그림입니다. 최근에 데비안 계열의 우분투와 페도라 계열의 CentOS가 많이 사용되고 있습니다. 이유는 Cloud 이슈와 맞물려서 저렴한 비용의 Open Source에 대한 수요가 증가하기 때문이죠~ 더보기
TCP/IP 포트 번호 정리 TCP/IP 프로토콜을 사용하기 위해서는 중요하게 설정해야 하는 요소는 두가지 이다. 첫번째는 IP 두번째는 포트 번호이다. 포트 번호에 대해서 간략하게 정리해보자 포트는 결과적으로 TCP에서 사용하는 요소인데, TCP 헤더에서 정의하게 되는 값이다. 2Byte의 크기로 설정되어있으므로 16비트 즉 0~65,535 값을 가지게 된다. 전송 포트는 아래와 같이 분류할 수 있다. 다음은 well-known ports 이다. 포트 프로토콜 포트 프로토콜 7 echo 21 ftp 23 telnet 25 smtp 37 time 80 http 110 pop3 Register Port는 1024~49151 포트를 사용한다. 8080 포트는 HTTP 대체 포트 번호이다. 참고로 톰캣 초기 세팅이 이 8080 포트로 되.. 더보기