클라우드 서비스 아키텍쳐 아이콘

AZURE architecture icons

Azure example architecture diagram (그림을 클릭하면 이동합니다.)

Amazon Web Service architecture icons

AWS example architecture diagram (그림을 클릭하면 이동합니다.)

Google Cloud Platform architecture icons

GCP example architecture diagram (그림을 클릭하면 이동합니다.)

경복궁 미디어 파사드

경복궁 미디어파사드 (2016-10-01) 2nd Session

궁의 아름다움
선 계절의 빛
회홍

우연히, 정말 우연하게도 덕수궁의 석조전 미디어 파사드를 보고
경복궁에서도 행사 소식이 있어서 부지런히 카메라를 들고 갔었다.

열심히 찾아봐도 저 때 이후로는 비슷한 행사가 더 없는 것 같다.

팬텀페인 여성 멤버 무한 영입방법 (메탈기어 솔리드 5)

(여성 포로가 있는 사이드옵스라면 무엇이든 상관 없지만 미션 시작 지역과 가까운 곳에서 포로를 회수 할 수있는 미션을 선택한다. )

1. 사이드옵스46 ‘포로회수 20’ 지역으로 이동
2. 포로 캡쳐 (회수 하지 않고 들처 맨다)
3. 미션 근접 조우 수주 (미션 시작지로 이동하면 포로 자동 회수)
4. 미션 취소 5. 다시 ……….포로

※ 패치돼서.. 더 안된다는 댓글이 있는데.. 잘 모르겠다… 벌써 몇년 전인지라..

‘수직 확장'(scale up) 과 ‘수평 확장’ (scale out)

수직 확장.

수직 확장 :
하드웨어를 기준으로 하드웨어의 사양을 늘린다.
램을 추가하고, HDD를 추가하고, CPU를 추가하는 등.
단순하긴 하지만 RAM 뱅크가 꽉 차면 램을 더 꽂을 수 없고, CPU소켓도 한정적이고,
확장에 한계가 있다는 단점과
경우에 따라서는 특정 제조사 전용 장비만 써야 하는 등의 단점이 있다.

어플리케이션을 수정할 필요는 없다는 장점이 있다.
어플리케이션의 수정, 업데이트가 쉽다. (수정 내역을 한곳에만 반영하면 되니까)

수직 확장

수평 확장 :
기존의 하드웨어는 그대로 두고 장비를 추가하여 소프트웨어적으로 하나처럼 묶는다.
클러스터링 하려는 소프트웨어만 구동할 수 있으면 되기 때문에 하드웨어 종속성이 덜하다.
이론상으로는 무한한 확장이 가능하고,
쿠버네티스 같은 오케스트레이션을 이용해 중단 없는 자동 확장도 가능하다.

일반적으로 네트워크로 연결 되므로 네트워크 환경이 좋지 않으면 확장이 불가능하거나,
확장을 해도 원하는 성능을 못 얻는 경우가 있다.
어플리케이션의 수정이 필요한 경우가 많고,
어플리케이션의 수정, 업데이트의 경우 각 노드에 반영해야 하므로 작업량이 늘어난다.

스토리보드

프로그램 등을 개발 할 때 프로그램의 화면, 사용자 인터페이스, 메뉴의 흐름 등을 설명하는 문서.
회사에 정해진 양식이 없는 경우 다음 사항을 유념해 작성 해야 한다.

– 개략적인 화면 모양
화면 레이아웃, 버튼의 위치, 아이콘 모양 등을 보기 쉽게 표현한다.
– 작업 흐름
순서도의 개략적인 구현 모습을 표현한다.
– 간결하게
실제 설계도와는 구분해야 한다.
문서를 보았을 때 ‘아 이프로그램은 이런 UI를 가졌고 이렇게 동작하는구나’ 정도를
쉽게 파악할 수 있어야 한다.

※ 표준 양식은 아니다. 참고용으로만 사용하자.
이렇게 작성해서 보고 했는데 양식이 별로라고 혼났어요 … 라고 하면 곤란하다.

Zookeeper #3. 구동과 확인

Zookeeper #1. 개요
Zookeeper #2. 설치와 설정
Zookeeper #3. 구동과 확인

Kafka #1. 개요
Kafka #2. 설치

※ zookeeper 앙상블에 들어갈 모든 노드에서 구동 되어야 한다.

 # zookeeper 시작
[kafka@kafka ~]$ $ZOOKEEPER_HOME/bin/zkServer.sh start
Using config: /home/kafka/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

 # zookeeper 종료
[kafka@kafka ~]$ $ZOOKEEPER_HOME/bin/zkServer.sh stop
Using config: /home/kafka/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

 # zookeeper 재시작
[kafka@kafka ~]$  $ZOOKEEPER_HOME/bin/zkServer.sh restart
Using config: /home/kafka/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
Using config: /home/kafka/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

 # zookeeper 프로세스 확인
[kafka@kafka ~]$  jps -l
53088 sun.tools.jps.Jps
38497 kafka.Kafka
52964 org.apache.zookeeper.server.quorum.QuorumPeerMain
87046 org.apache.kafka.connect.cli.ConnectStandalone
 # zookeeper 프로세스 확인
[kafka@kafka ~]$  jps -l
53088 sun.tools.jps.Jps
38497 kafka.Kafka
52964 org.apache.zookeeper.server.quorum.QuorumPeerMain
87046 org.apache.kafka.connect.cli.ConnectStandalone
 # 네트워크 확인
[kafka@kafka ~]$  netstat -nltp
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:3389            0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:3350          0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      -
tcp6       0      0 :::35068                :::*                    LISTEN      52964/java
tcp6       0      0 192.168.103.113:9092    :::*                    LISTEN      38497/java
tcp6       0      0 :::2181                 :::*                    LISTEN      52964/java
tcp6       0      0 :::3888               :::*                    LISTEN      52964/java
tcp6       0      0 :::2888                 :::*                    LISTEN      52964/java
tcp6       0      0 :::111                  :::*                    LISTEN      -
tcp6       0      0 :::8080                 :::*                    LISTEN      52964/java
tcp6       0      0 :::8083                 :::*                    LISTEN      87046/java
tcp6       0      0 :::37045                :::*                    LISTEN      87046/java
tcp6       0      0 :::42901                :::*                    LISTEN      38497/java
tcp6       0      0 :::22                   :::*                    LISTEN      -

로그 확인
일단 [ERROR], [CRITICAL] 같은 단어가 보이면 뭐가 잘못됐건 잘못 된 것이다.
[WARN]의 경우는 보통 당장 구동에는 문제가 없지만 특정 작업, 조건 등에서 문제가 발생할 수
있다. 주의 깊게 봐야 한다.

[kafka@kafka ~]$ tail -100f $ZOOKEEPER_HOME/logs/zookeeper-kafka-server.out
2020-09-03 10:11:35,822 [myid:2] - WARN  [QuorumConnectionThread-[myid=2]-2:QuorumCnxManager@400] - Cannot open channel to 3 at election address /192.168.113.138:3888
java.net.ConnectException: 연결이 거부됨 (Connection refused)
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:607)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.initiateConnection(QuorumCnxManager.java:383)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager$QuorumConnectionReqThread.run(Qu ....
2020-09-03 10:11:35,828 [myid:2] - INFO  [WorkerReceiver[myid=2]:FastLeaderElection$ ... 후략

예제의 경우 다른 zookeeper 노드가 아직 구동되지 않아 발생한 [WARN] 메시지가 존재한다.
나머지 노드가 구동되고 연결되면 [WARN] 메시지는 사라진다.

로그의 모든 내용을 설명하기는 어렵고 자주 바라보고 눈에 익숙해 질 수 있도록 해야한다.