전체 글 477

쿠버네티스 service를 사용한 네트워크 설정

POD 배포하기 test-pod.yml apiVersion: v1 kind: ReplicationController metadata: name: kubia spec: replicas: 3 selector: app: kubia template: metadata: labels: app: kubia spec: containers: - name: kubia image: reg.cloud.com/kubia ports: - containerPort: 8080 $ k create -f test-pod.yml## test pod 실행 총 3개 실행 8080으로 열기Service 배포하기test-service.yml apiVersion: v1 kind: Service metadata: name: kubia spec: p..

쿠버네티스 service를 통한 네트워크 설정 개념정리

kubernetes에는 3개의 service라고 불리는 네트워크 객체가 있다. Load balancer > Node Port > ClusterIP 총 3개의 service 존재 네트워크 종류별 사용 연결 예제 stateless application으로 띄울 경우 ip는 항상 바뀌므로 이를 명심하여 사용. ClusterIP * 내부 POD끼리만 통신가능, 외부는 안됨 * 내부 ip를 알아내기 위해 internal DNS를 사용 Node Port * 외부 사용자 혹은 client와 통신하기 위함 * Node Port를 만들면자동으로 clusterIP가 생성됨. * 내부 clusterIP가 아닌 또 다른 클러스터 바깥의 Load balancer을 통해서 요청이 들어옴. 해당 요청이 다시 clusterIP의 내..

쿠버네티스 RC를 통한 POD생성 및 Probe를 통한 health check

yml파일을 사용해서 쿠버네티스에서 pod만들기 multiContainer.yml apiVersion: v1 kind: Pod metadata: name: multi labels: app: wordpress spec: containers: - name: wordpress image: reg.cloud.com/wordpress ports: - containerPort: 80 - containerPort: 443 env: - name: WORDPRESS_DB_HOST value: 127.0.0.1 - name: WORDPRESS_DB_USER value: wordpress - name: WORDPRESS_DB_PASSWORD value: password - name: db image: reg.cloud.co..

도커 기초, 컨테이너와의 관계 및 명령어

Docker은 기본적으로 리눅스 커널 위에서 돌아간다. Docker 버젼 확인 방법$ docker version * client는 docker-cli의 버젼 * server는 docker-server의 버젼 Docker 이미지란* tar파일로 묶어 놓은 파일 시스템 Docker alpine linux이미지 가져오기 & 실행alpine linux : 최소로 경량화된 리눅스$ docker image pull alpine$ docker image ls $ docker container run alpine ls -l * docker run : 내 repository에 alpine이라는 image가 있는지 확인하고, 격리된 container안에서 alpine을 실행시켜라!* alpine 이미지, 컨테이너로 실행 ..

Firebase Dynamic Link로 사용자를 효과적으로 유입시키는 방법

[Android Knights 2018] Firebase Dynamic Link로 사용자 유입시키기speaker. 박상권 - 피알앤디컴퍼니 헤이딜러 서비스 개발자 [박상권의 삽질블로그] 운영Java 오픈소스 대한민국 2위 사용자가 컨텐츠/상품을 공유할때 우리서비스로 효율적으로 유입시킬수 있는 방법에 대해 소개하고, 이를 추천인/프로모션에 활용하는 서비스에서 효율적으로 적용할 수 있는 방법에 대해서 소개합니다. Android뿐만 아니라 iOS, Web에서도 공통으로 사용할 수 있어 모든 개발자들의 개발시간을 단축시켜 줍니다. 보통 위와 같이 버튼이 2개가 보인다. 2개가 동시에 보일 필요가 없다(사용자의 단말에 맞는 OS에 대해서만 보이는게 가장 좋음) 사실 그런데 이미 설치되어 있는 사용자는 저런 버튼이..

카테고리 없음 2018.04.22
[ConstraintLayout] 효과적인 ConstraintLayout 사용방법

[Android Knights 2018] 지금은 ConstraintLayout 시대 speaker. 안세원 - 카카오 모빌리티 안드로이드 개발자 최근 참여 앱 카카오 T 택시 기사용 카카오 T 카카오톡 Guide, Chain 등에서 부터 최신 업데이트된 기능까지! 혼자 알기 아까운 ConstraintLayout, 복잡한 구조도 한방에 멋지게! 복잡한 레이아웃을 단순한 계층구조를 이용해 표현할 수 있는 View Group Relative layout과 아주 비슷하지만 유연하고 다양한 기능을 제공함 ex. relative layout에서 4 depth이상 들어가야하는 것도 1 depth로 가능!!! ConstraintLayout 장점 Linear Layout을 써야만 했던 뷰 비율 조절도 간단히 가능(dep..

[Instance app]설치 없이 네이티브앱의 사용경험을 제공할 수 있는 방법

[Android Knights 2018]Best practice on Android Instance Appsspeaker. 김종식 - 원티드팀 안드로이드 개발자 만약 내가 개발한 앱이 설치없이 동작한다면? 설치 없이 네이티브앱의 사용 경험을 제공할 수 있는 인스턴트앱의 개발과정을 환경 설정 구성부터 배포까지 준비하였습니다. 이를 작업하면서 알게 된 많은 내용과 배포를 하면서 경험했던 유의사항, 인스턴트앱을 이용하여 시도했던 다양한 경험과 기존 프로젝트에 함께 적용하는 방법 등을 공유하려고 합니다. 일반적으로 웹에서 부터 딥링크방식을 많이 제공함 -> url에서 제공하는것을 네이티브로 연결(일반적임) but 설치가 되어있지 않다면 다시 play store로 이동해야하는 문제가 있다. 만약 설치가 없을 경우..

[asciinema] shell script, terminal 영상으로 녹화하기!!

개발자가 자신이 개발한 내용을 포스팅할때 이때까지 불편하게 colorscript(링크)나 혹은 github의 gist(링크)를 통해서 개발한내용을 블로그에 embedded 하곤 했다. 그러나 asciinema(링크) 를 쓴다면 더 동적으로 실시간으로 터미널을 녹화하여 포스팅 할 수 있다. 준비물macbook or linux computer with terminalhomebrew터미널에 설치 방법brew install asciinema 녹화 방법시작 : aciinema rec 끝 : exit 영상 파일 블로그에 포스팅 방법녹화 완료.cast 파일 업로드script 다운로드 및 추가 js, css 다운로드 : https://github.com/asciinema/asciinema-player/releasese..

[Hazelcast]Java concurrent lock 구현하기

Hazelcast Lock 하젤케스트에서 사용하는 ILock은 java.util.concurrent.locks.Lock 의 상속구현체이다. 즉, 모든 클러스터에서 네트워크상에 이상이 없는한, lock이 잡힌 critical section은 한번에 한 쓰레드만 도는 것이 보증된다. Lock 구현은 매우 신경써서 하지 않으면 문제점이 바로 생겨날 가능성이 있으므로 주의하여 구현해야만 한다. Try-catch구문을 사용하여 Lock 사용하기 lock안쪽 구문은 반드시 try-catch 구문을 사용해야한다. 만약 critical section에서 에러가 났을때 unlock 가능하도록 도와주기 때문이다. 또한 lock구문에서 에러났을때 unlock되는 것을 막기 위해 lock method의 밖에도 try-catc..

IMDG 소개 및 하젤케스트 오픈소스 솔루션 소개

IMDG가 필요한 이유?일반적인 1 server, 1 application 구조에서는 memory상에 자신이 쓰고자 하는 자료구조(map, lock, list 등)를 올려두고 쓰면된다. 그림. 일반적인 1 server, 1application 구조 그러나.. 만약 *(many) server, *(many) application 구조에서 특정 자료구조(map, lock, list 등)를 공유해서 사용하고 싶다면 In-Memory Data Grid가 그 해법이다. 그 중에서 추천하는 것은 JVM위에서 돌아가는 Hazelcast를 강추한다. 그림. Hazelcast(IMDG)를 사용하여 자료구조를 공유하여 동시에 사용가능 IMDG란?IMDG : In memory data grid더 빠른 결과를 제공하기 위한 ..

젠킨스 파이프라인 문법(Pipeline Syntax) 총정리

젠킨스 파이프라인을 구성하기 위해서는 파이프라인 문법을 작성하는게 중요하다. 단순히 groovy에 대한 문법 뿐만아니라 jenkins에서 사용가능한 준비된 function들(혹은 block들)을 잘 익히고 사용하는 것이 매우 중요하다!(ex. timeout) [개발이야기/Jenkins] - Jenkins Pipeline 개요 및 파이프라인 스크립트 예제 에서 간단한 파이프라인에 대한 개요를 확인 할 수 있다. 파이프라인 선언 파이프라인 선언은 간단하게 아래와 같은 block으로 이루어 진다. 모든 파이프라인은 반드시 pipeline block으로 감싸져야 한다. 파이프라인 안쪽의 statement, expression은 groovy 언어를 따른다. pipeline { /* insert Declarativ..

DevOps/CI & CD 2018.03.12
[Groovy]배열 종류 및 사용법

Groovy의 array는 java 처럼 쓸수도 있고 혹은 groovy 자체의 방식으로도 사용가능하다. array 내부에 들어가는 변수는 groovy 변수와 같이 다양한 타입의 변수가 한번에 들어갈 수 있다. 준비물 macbook groovyConsole설치(설치하는 방법 보러가기) Array append(배열 추가하기) 1. terminal에서 groovyConsole 실행 $ groovyConsole 2. 아래와 같이 groovy script def andersonArray = [] andersonArray.add("tistory") andersonArray.add(-3.1) andersonArray

[Groovy]변수 선언하기 및 변수 종류

groovy의 variable의 type은 마지막에 집어넣은 data의 형을 따른다. 즉 javascript마냥 다양한 변수를 집어넣을 수 있는 것이다. 혹은 java처럼 쓰일 수도 있다. 준비물 macbook groovyConsole설치(설치하는 방법 보러가기) Groovy def 변수 선언하기 1. terminal에서 groovyConsole 실행 $ groovyConsole 2. 아래와 같이 groovy script def x = 1 x = new java.util.Date() println x x = -3.1499392 println x x = false println x x = "Groovy!" println x 3. 결과물 Java 변수 선언하기 1. terminal에서 groovyConsol..

[Groovy]설치하고 helloworld 출력하기

준비물 Macbook terminal sdkman(설치방법보러가기(링크)) 시작 1. terminal을 켜서 sdk install groovy 입력 $ sdk install groovy 127 ↵ ==== BROADCAST ================================================================= * 07/03/18: Grails 3.3.3 released on SDKMAN! #grailsfw * 06/03/18: Groovy 2.6.0-alpha-3 released on SDKMAN! #groovylang * 04/03/18: Jbake 2.6.0 released on SDKMAN! #JBake ====================================..

Jenkins Pipeline 개요 및 파이프라인 스크립트 예제

젠킨스 파이프라인 시작하기 젠킨스파이프라인은 CD(Continuous delivery)를 하기에 적합하다. Pipeline DSL을 통해 다양한(간단한 파이프라인 부터 복잡한 파이프라인 까지) 파이프라인을 "코드로" 개발할 수 있다. 사전작업 젠킨스 파이프라인을 사용하려면 아래의 준비물이 필요함 Jenkins 2.x or later Pipeline plugin(https://plugins.jenkins.io/workflow-aggregator) 파이프라인을 설치하고 관리하는 방법 보러가기 -> 젠킨스 파이프라인 설치 및 관리 파이프라인 정의하기 젠킨스 파이프라인은 groovy syntex로 제한적으로 스크립트 언어로 수행가능하다. 그러므로 groovy 언어를 학습하는 것은 파이프라인을 구성하는데 유용하다..

DevOps/CI & CD 2018.03.09
서울, 주말에 헤드폰 AS가능한 소니 매장

강남 서비스 센터대표번호 : 02-1588-0911위치 운영시간 - 평일 : 11:00 ~ 20:00 -토요일 : 11:00 ~ 15:00 ※일요일/공휴일은 휴무입니다.취급제품 캠코더, 카메라, 오디오등 일반 AV제품, VAIO노트북, 블루투스, 헤드셋, 알파 DSLR 수리 (TV, 카오디오, 방송장비, 플레이스테이션 제품군 수리 불가) 서초 서비스센터대표번호 : 02-525-1181위치 운영시간 평 일 : 09:00~18:00 토요일 : 09:00 ~ 13:00 일요일, 공휴일 휴무취급제품 서비스가능 제품: TV, 캠코더, 카메라, 오디오 등 일반 AV제품, VAIO 노트북 접수대행 : DSLR, 블루투스 헤드셋 수리불가 제품: 방송장비, 카오디오, 플레이스테이션 양천 서비스센터대표번호 : 02-525..

일상 2018.03.05
[Intellij] 200% 활용하기(toolbox, jira, git 등)

인텔리j를 그저 text edit로 사용하고 있는 것이 아닌가? Jetbrain toolbox jetbrain 관련 툴을 한눈에 보고 관리 가능cmd + shift + acommand action 관련 시작 가능JIRAPreference > Tools > Tasks > Servers > jira 서버 추가alt + shift + n나의 jira 선택가능jira에 대한 progress를 선택, 브랜치 생성 등 가능GITGit flow 관련해서 필요한 것들을 intellij 내부에서 자동으로 처리 가능(ex. develop에서 feature 따기)Preference > Plugin > Git Flow integration 설치JIRA 관련 task 진행Gitflow operationGit flow 버젼에 맞..

개발이야기 2018.02.24
Oracle 권한 추가 후 오류 [ORA-00942 테이블 또는 뷰가 존재하지 않습니다]

ibatis로 mapper나 기타 등등의 방법으로 개발하다가 권한 추가할 때가 있다. A라는 계정으로 person이라는 테이블에 insert, select 권한을 추가하고 insert를 실행 했지만 동작하지 않고 아래와 같이 오류를 내뿜는 경우가 있다. ORA-00942 테이블 또는 뷰가 존재하지 않습니다 위와 같은 경우 아래의 경우를 의심해봐야 한다. oracle synonym처리때문에 계정이 접근을 못하고 있는가? -> synonym관련 테이블 권한을 확인한다. insert구문안에 sequence구문이 있는가? -> 각 sequence에 대해서 권한을 추가한다.

crontab grep 특정 문자 찾는 방법 & crontab 옵션 정리

crontab 내부에 있는 line 중, 특정 문자열(ex. target 문자)이 들어간 줄만 grep하고 싶다면? $ crontab -l | grep 'target' crontab option list file Load the crontab data from the specified file. If file is a dash ("-"), the crontab data is read from standard input. -u user Specifies the user whose crontab is to be viewed or modified. If this option is not given, crontab opens the crontab of the user who ran crontab. Note: u..

개발이야기 2018.02.08
[Telegraf + influxDB + Grafana]10분만에 데브옵스를 위한 모니터링 시스템 구축하기

각 솔루션이 하는 역할 위와 같은 솔루션을 선택한 이유 -> [Telegraf + influxDB + Grafana]DevOps를 위한 서버 모니터링 솔루션 선택 보러가기(클릭) 무엇을 할까? 내 컴퓨터를 위한 시스템(cpu, memory 등)을 모니터링하는 이쁘고 귀여운 모니터링 시스템 준비사항 * 10분 * 맥북 * Homebrew 앱 설치, 설정(3min) 1. 텔레그래프 설치 $ brew install telegraf 2. 텔레그래프 설정 $ cd /usr/local/Cellar/telegraf/1.5.1/bin $ telegraf config > telegraf.conf $ vi telegraf.conf ###################################################..

[Telegraf + influxDB + Grafana]Setup DevOps monitoring system in 10min

The role of each solution What you'll build Beautiful system metric monitoring system for own computer(localhost). What you'll need * About 10 minutes * Macbook * Homebrew Install & setup apps(3min) 1. install telegraf $ brew install telegraf 2. setup telegraf $ cd /usr/local/Cellar/telegraf/1.5.1/bin $ telegraf config > telegraf.conf $ vi telegraf.conf ##########################################..

[Telegraf + influxDB + Grafana]DevOps를 위한 서버 모니터링 솔루션 선택

DevOps는 개발자가 갖추어야할 기술중 하나인 시대이다. DevOps를 한마디로 표현하자면 아래와 같은 벤다이어그램으로 설명 가능하다.(출처:위키피디아) 개발을 함 뿐만아니라 품질관리, 운영까지 모두 담당하는 것이다. 이 모든것이 가능하게 된 것은 자동화된 솔루션들의 발전때문일 것이다.(특히 오픈소스 솔루션) 그 중 DevOps 밴다이어그램의 한 부분을 차지하는 Operation(운영)에 필수적으로 필요한모니터링 오픈소스 솔루션에 대해서 이야기 하고자 한다. 모니터링의 가장 기본 옵션인 System metrics(CPU, memory, disk 등)을 모니터링하는 솔루션을 구축하는 방법을 찾아보면 아래와 같은 옵션이 있다. 장점 단점 직접 개발 커스터마이징 극대화 가능 개발하는데 시간이 오래 걸림 유료..

비트코인과 리플코인, 퀀텀코인 개발자 분석을 통한 호재 파악

이 글에서는 비트코인과 리플코인 그리고 퀀텀코인을 개발하는 개발자가 누군지, 어떻게 개발하고 있는지에 대해 알아보겠다.(메인 개발자는 commit 개수(소스 등록 개수) 기준으로 한다.) 비트코인개발소스 : https://github.com/bitcoin/bitcoin메인 개발자 : laanwj(https://github.com/laanwj) - 1,529개의 commit 리플코인개발소스 : https://github.com/ripple메인 개발자 : JoelKatz(https://github.com/JoelKatz) - 4,243개의 commit 퀀텀코인개발소스 : https://github.com/qtumproject/qtum메인 개발자 : laanwj(https://github.com/laanwj)..

개발이야기 2018.01.09
신형 맥북 충전가능한 여행용 필수 보조 배터리 N9-X20

보조 배터리는 이제 일상에서 땔 수 없는 아주 중요한 필수요소이다. 그런데 아주 형편없는 보조배터리가 많다.(충전이 느리고, 용량이 작고) 그런 와중 아래 보조배터리를 경품으로 받게되고 보조배터리의 신세계를 보았다. 보조 배터리 N9-X20 기본적으로 고급스러운척을 하는 얇은 가죽케이스를 제공한다.(배터리 보호기능은 없다) 좌측에 전원버튼을 누르면 100, 098 등의 숫자로 배터리 용량을 알 수 있다. 중간에는 usb-c, micro-usb로 보조배터리를 충전가능하며 우측에는 2개의 output 포트가 있다.(빨강색이 퀄컴 고속충전) 가죽케이스를 벗기면 아름다운 곡선과 20000mAh의 어마무시한 용량을 볼 수 있다. 아래편에는 자세한 sepc이 나와 있다. usbc를 통해서 신형 맥북 노트북(충전기가..

일상 2018.01.06