자바 프로그래밍을 할 때 원격 서버에 설치된 자바 프로그램을 로컬에서 원격으로 디버깅을 할 수 있다. IntelliJ 혹은 Eclipse 같은 통합 개발환경에서 서버에 설치되어 있는 자바 프로그램을 디버깅 할 수 있다. 특히 도커(Docker)를 이용해서 실제 배포 환경과 유사한 실행 환경을 만들어 놓고, 테스트를 해볼 수 있어 알아두면 편리한 기능이다. 이번 포스트에서는 도커에 자바 프로그램을 구동시켜놓고 IntelliJ와 Eclipse에서 원격으로 디버깅을 해보겠다. 실행할 자바 프로그램 간단한 자바 프로그램을 작성한 다음 도커에 구동시킨 후 원격 디버깅을 해보자. public class Test { public static void main(String[] args) { for (int i = 0;..
도커 컨테이너를 다룰 때 네트워크 설정을 잘 이해하고 사용하는게 중요하다. 도커 환경에서 각 컨테이너들에 할당되는 내부 IP, Port와 호스트 운영체제의 IP, Port 사이의 관계를 잘 이해하고 있어야 도커 환경을 잘 사용할 수 있다. docker run -p 명령 도커 컨테이너를 실행 시킬 때, '-p' 옵션으로 호스트 운영체제와 컨테이너 환경의 포트를 매핑 시킬 수 있다. 예를 들어 docker run -it -p 5005:5005 ubuntu 이렇게 컨테이너를 새로 만들면, 호스트 운영체제의 5005번 포트와 컨테이너의 5005 포트가 매핑된다. 즉, 호스트 운영체제의 5005 포트로 전달된 정보들이 컨테이너 환경의 5005 포트로 포워딩된다는 의미다. docker run -it -p 8088:..
실리콘 밸리하면 '기회의 땅', '스타트업의 요람', '고소득 엔지니어'라는 이미지를 떠올린다. 하지만 실리콘 밸리에 대해서 조금 찾아보면 어마어마한 집값에 대해서 알게 된다. 전세계의 IT 엔지니어가 실리콘 밸리로 모여들어 이 곳의 부동산 가격을 붐업 시켰기 때문이다. (실리콘 밸리의 엔지니어들의 고소득이 한 몫했다.) 때문에 실리콘 밸리의 고소득 엔지니어들이 주택을 구하지 못해 홈리스로 살거나 실리콘밸리에서 멀리 떨어진 샌프란시스코 근교까지 밀려나 길고 긴 출근길에서 시간을 보내는 일이 흔하다. 실리콘 밸리 회사들의 복지를 찾아보면 주택 자금 대출 지원과 관련된 내용을 심심치 않게 볼 수 있는데 이런 현실과 크게 관련이 있다. 애플이 이런 실리콘 밸리 인근의 주택 문제 해결을 위해 25억 달러를 투입..
깃허브 페이지 기능을 이용해서 기술 블로그를 만들어 보는 사이드 프로젝트를 진행하고 있었다. 찾아보니 깃허브가 지킬(Jekyll)을 공식적으로 지원한다고해서 지킬 개발 환경을 설치했었다. 이후 맥 운영체제를 카탈리나(Catalina)로 업그레이드를 했고, 뭔가 잘 안되기 시작했다. Gem 을 이용해 설치한 디펜던시들이 하나둘씩 없어졌고, 하나씩 설치하는데 너무 짜증나서 지킬 데몬을 도커 컨테이너로 띄워보기로 했다. 지킬 도커 이미지 만들기 우선 우분투 도커 이미지를 이용해서 실행 환경을 띄우자. docker run -it --name jekyll_tmp ubuntu 컨테이너에 접속이 된다. 필요한 기본 패키지들을 설치한다. apt-get update apt-get install vim ruby-full ..
프로그래머라면 구글에서 일하는 꿈을 한번씩은 꿔 볼 것이다. 평균 연봉이 12만 달러를 넘는 구글의 엔지니어가 되기 위해서 필요한 11가지 스킬을 정리한 글이 있어서 정리를 해봤다. (링크 : 11 skills you need to master to land a $100,000 engineering job at Google - Business Insider India) 1. Mastering the foundation (기초 습득) 우선 컴퓨터 사이언스 관련 기초 지식을 확실하게 습득해야한다. 운영체제와 컴퓨터 구조 같은 정보는 실무에 쓸 모 없을 것 같아보이지만 새로운 지식을 얻을 때 두고두고 도움이 된다. 최근에는 각 대학들이 오픈 코스웍으로 강의 정보를 공개하고 있고, Undacity나 Course..
우분투에서 패키지를 설치하기 위해 apt-get 명령을 많이 사용한다. apt-get은 Advanced Packaging Tool의 약자로 우분투를 포함한 데비안 계열의 리눅스에서 사용되는 패키지 관리 툴이다. 터미널을 통해 간편하게 패키지를 설치할 수 있어 GUI 기반의 패키지 설치 도구보다 더 널리, 많이 사용되는 소프트웨어다. apt-get에는 update와 upgrade 명령이 있는데 유사해보이지만 분명 다른 역할을 하는 명령이다. apt-get update 'apt-get update'는 운영체제에서 사용 가능한 패키지들과 그 버전에 대한 정보를 업데이트하는 명령어다. 설치되어 있는 패키지를 최신으로 업데이트하는 것이 아닌 설치가능한 리스트를 업데이트하는 것이다. apt-get install 명..
도커를 사용할 때 우분투 이미지를 기본 이미지로 이것저것 많이 설치하곤 한다. 도커에서 얻을 수 있는 기본 우분투 이미지에는 거의 아무것도 설치가 안되어 있어서 하나하나 다 설치를 해야하는데, 그 중에 네트워크와 관련된 테스트를 하기 위한 'ping'과 'ifconfig' 명령을 사용해야할 필요가 있다. 우선 apt-get으로 설치가능한 패키지와 버전을 최신으로 업데이트하자. sudo apt-get update ping 유틸을 설치한다. sudo apt-get install iputils-ping ifconfig 유틸을 설치한다. sudo apt-get install net-tools 이제 우분투 환경에서 ping 명령과 ifconfig 명령을 사용할 수 있다.
REST API 서버로 요청을 보낼 때 아이디와 비밀번호를 이용한 기본 인증(Basic Authentication)이 요구될 수 있다. 터미널에서 curl 명령을 이용해서 REST API를 사용할 때 -u 옵션으로 아이디와 비밀번호를 입력할 수 있다. curl -u userId:userPassword {...} Basic Authentication 기능을 요구하는 REST API 서버에 OkHttp 클라이언트를 사용해서 요청을 전송하는 예제를 살펴보자. BasicAuthenticator 구현 OkHttp 클라이언트는 OkHttp3.Authenticator 라는 인터페이스를 구현한 Authenticator를 이용해 인증을 할 수 있다. 아이디와 비밀번호를 이용한 BasicAuthenticator를 얻어오는..
톰캣을 이용하여 내부 모니터링 시스템을 운영하고 있는데, 시스템을 배포하면서 뭔가 문제가 생겨버렸다. 아마도 톰캣을 재시작하면 해결될 것 같았다. 톰캣을 재시작하는 방법은 톰캣에서 제공하는 스크립트를 이용하면 된다. 톰캣이 설치된 디렉토리를 '$TOMCAT_HOME'이라고 했을 때, $TOMCAT_HOME/bin/shutdown.sh $TOMCAT_HOME/bin/start.sh 이 두 스크립트를 실행시켜주면 톰캣이 재구동된다. ps -aux | grep {user id} | grep tomcat 위 명령을 실행하면 현재 머신에서 로그인한 사용자 계정으로 구동시킨 톰캣 서버의 프로세스 정보를 확인할 수 있으며, 재시작된 시간 정보를 확인할 수 있다.
Docker 엔진 위에 하둡 클러스터를 띄워놓고 호스트 머신에서 IntelliJ를 통해 Docker에 구축해놓은 하둡 클러스터로 접근하는 테스트를 해봤다. (코드 분석 때문에 IntelliJ의 디버깅을 사용하고 싶었는데 실제로 구축해놓은 테스트용 하둡 클러스터에 붙기보다는 테스트를 위해 즉석으로 도커에 띄운 클러스터로 접근하는 것을 해보고 싶었다.) 구축한 하둡 클러스터의 데이터 노드들은 172.17.0.x 의 내부 IP를 할당 받았고 같은 포트로 구동되어 있었다. IntelliJ로 DFSClient 예제를 작성하여 도커에 떠있는 하둡 클러스터로 붙어서 돌려보는데 동작이 네트워크 IO 쪽에서 멈춰버렸다. 네트워크 문제인가해서 'ping 172.17.0.2'로 컨테이너에 ping을 보내보니 $ ping 1..
- Total
- Today
- Yesterday
- 고추
- java
- 파이썬
- 파이참
- 화분
- 상추
- 자바
- hadoop
- monitoring
- docker
- Python
- InterlliJ
- pycharm
- Jekyll
- 청양고추
- 도커
- 깃허브
- MacOS
- 베란다 텃밭
- okhttp
- 텃밭
- 화분 버리기
- GitHub
- 리눅스
- linux
- 상추 재배기
- 베란타 텃밭
- 지킬
- nf_conntrack
- 하둡
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |