11/22/2023

Github Action 확장사용

1. Github Action 확장사용법 

  • Github의 변경사항 정리 
Github에 최근 변경사항 및 관련부분들 정리 

  • Github Action 기본사용법 
Github Action 기본사용법 정리 (반드시 확인) 

  • Github Action 설명 Site
설명이 잘 되어있어, 아래 부분들을 Link 연결하며, 지금까지 나만 사용 못했나 보다. 


Runner(Virtual Machine)기반으로 Docker를 이용하여 사용할 수 있으며, 본인만의 Github Action도 구현가능하다. 
시간이 좀 더 되면 다시, CirCleCI의 Relese 기능과 관련부분도 같이 좀 더 봐야 할 것 같다.


1.1 Docker 이용하여 확장사용가능 

Docker를 기본적으로 이용할 줄 알면 아래의 사용법도 대충 알 것이라고 생가되어진다.
좀 세련되게 구성하고자 한다면 본인이 직접 Containter (Dockerfile)을 만들어서 등록 후 사용해도 좋다. 

  • Github Action 내부에서 Docker 와 Docker Hub 사용법 
Docker Hub를 통하여 사용하면 되겠으며, 본인 마음대로 만들어서 사용해보도록 하자.

  • Docker 기본 사용법 
Docker의 기본명령어와 사용법을 알아두도록 하자 

  • Docker Package 하여 Publish 방법 
Docker Hub에 Publish 하는 방법 



1.2 보안기능지원 


현재 Cloud 기반의 Devops CI/CD는 쿠버네티스(Kubernetes)기반으로 병렬(Parrell)로도 지원하도록 가는 추세이며, 
더불어 보안기능제공하는 DevOps에서 DevSecOps  변경되어 가는 것 같다. 

  • Github Action도 제공 
보안기능도 제공을 해주어서, 요즘 DevOps 에서 DevSecOps로 가는 것 같다.
글을 읽어보면, TOKEN방식으로 진행하는 것 같으며, 흐음, 아직 보안은 좀 더 강화되어야 할 것 같다.


1.3 각 시각화 및 문제해결 

  • Worklofw Monitor
Cloud로 진행하다 보니, 어디서 막히는지 그런 것을 Debuging 하려고 만들 것 같으며, 시각화도 너무 멋지다. 

  • Github Action Badge
Github의 REAME.md에 세련되게 아래의 Github 공식 Badge 정도는 넣어두도록하자.

Private repository는 Github에서 공식으로 제공되는 Badge 이외는 동작하지 않으므로 주의
e.g. 
![GitHub release](https://img.shields.io/github/release/JeonghunLee/lora_gateway.svg?style=flat-square)              
![GitHub Action](https://github.com/JeonghunLee/lora_gateway/actions/workflows/ccpp.yml/badge.svg)    


2. Github Runner 사용 

일단 Cloud에서 돌아가는 Virtual Machine이라고 생각하며 되겠으며, 이 기반에 각 OS를 설정하여 돌아 간다고 생각하면 되겠다.
각 Runner는 현재 Parallel로는 지원되지 않는 것 같으며, 다만 Github Manaul의 그림보면, Parallel로 되는 것 처럼 나온다.
대신, Runner 한개로 Docker 기반으로 Concurency하게 동작은 가능할 것 같다. 

이렇게 까지 사용할 분들이 있을지 모르지만, Build 속도 때문에, 상위부분은 민감한 부분일 수 있다. 
특히 만약 Yocto로 한다면, 좀 골치가 아플 것 같다. 나중에 해봐야 알겠지만 


2.1 Github Runner 사용 

나의 경우에는 Github Hosting Runner를 사용했지만 아래와 같이 별도로 등록하여 사용해도 괜찮은 것 같다.
나는 이것만으로도 만족하며, 각 요금제에 따라 동작하는 Runner(Virtual Machine)이 다르므로 확인해야 한다.



2.2 Self-hosted Runner 등록 후 사용 

나는 아직 테스트를 못했지만, 자기가 가지고 있는 Machin(Self-Hosted Runner) 역시 등록하여, 다양하게 기능을 제공해주고 있는 것 같다. 
나중에 별도로 DevOps 전용 서버가 있다면 등록하여 테스트 해보도록하자.

  • Self host Runner
나의 경우는 현재 Github에서 제공해주는 Runner(Virtual Machine)이용하지만, 본인의 Hosted Runner를 등록가능한 것 같다.

  • 반드시 확인 (제한사항들) 



3. Github Action 기본분석 및 사용방법  

Github에서 제공하는 Github Action만 사용가능한게 아니며, 본인이 원하면 원하대로 구성도 가능하다.
이 부분은 아래에서 Github 에서 제공하는 Github ActionCustom Github Action을 각 분석을 해보겠다. 

  • Github 에서 제공하는 Action 기능확인 
현재 Github에서 제공해주고 있는 Action 기능들을 확인.


  • Action Checkout
가장기본으로 사용하며, Git checkout 소스를 download하여 한 후 build를 진행 
사용방법은 release에 각 release version 존재하며 README.md에서 각 사용법을 알아두도록하자.


  • Action upload artifact
C/I를 build를 진행하여 나온 결과물을 Upload하는 것으로 사용방법은 RADME.md에서 각 사용법참조.


  • Action Github Release
최종 Github Release 로, Source 를 압축하여 Release하고, 변경관련정보를 같이 넣어 Github Release에서 확인가능.
더불어 Tag 와 release 이름도 넣어 진행가능하며 변경사항도 정리도 가능 


  • Action Github Release->Asset 
Github Release의 Asset에 별도로 File을 추가한다. (나의 경우 Binary File 추가)


  • 항상 Github Action 사용전에 
기본적으로 사용법을 알고 싶다면, 각 Github Action의 Site의 README.md를 확인하도록 하자.


3.1 Github Action 세부분석   

Github에서 제공하는 Github Action이며, 이를 좀 자세히 분석해보도록 하자. 
일단 위치는 https://github.com/actions 이곳에 있으며, 이 중 checkout을 비교 분석해보자.

  • action/checkout 분석 
action.yml 시작 점으로 각 Java Script을 과 이에 배포에 필요한 Package.json 확인해야 하는 것 같다.
Java Script을 완벽히 잘모르기 때문에 간단히 분석하며, 아래의 Custom Github Action 과 일단 다른 구조이다. 

action.yml 확인 
아래에서 실행되는 파일을 찾아서 보면, run의 dist/index.js 이며 , node.js 이고 HTTP Post방식같다.

dist/index.js 확인 
상위 run에서 실행되어지는 Java Script 

Node.js Package 작업시 같이 필요할 것 같아 Link만 연결  

일단 다 봐도 세련되게 Node.js로 구성한 것 같다. 


3.2 Github Action 사용법

이전 기본사용법에서도 봤듯이 workflow 구성한 후  Job 의 밑에 step을 두고, 각 사용하면된다.  

action/checkout 사용법


concurrency 로도 동작가능



3.3 Custom Github Action 구성

상위 Github에서 제공하는 Github Action만 사용가능한게 아니며, 본인의 Custom Github Action 구성도 가능하다.

  • Github Custom Action 지원 
기본으로 제공하는 Github Action 이외에도 본인 Container를 구성 후 만들어도 좋다.
DockerFile을 설정 후 EntryPoint 기반으로 구현하는 것으로 보인다. 


  • Github Custom Action 만드는 방법 
나도 아직 만들어 보지 못했지만, Github manual을 보면 쉽게 만들 것이라고 생각되어진다.
아래의 Github manual을 자세히 보고, 다른 예제를 보면 될것 같다.

STEP.1 Docker Container 생성 
Docker Container를 구성후 각 Entrypoint 설정과 관련 Script 이용
Python 이든 본인이 익숙한 언어로 구성하면 될 것 같다. 


STEP.2 hello-world-docker-action/action.yml 생성 
metafile이라고 하는데, yml로 쉽게 생성가능 


STEP.3 Docker의 Entrypoint 실행파일 
실제적인 Action Code라고 하며, 가장 중요 


STEP.4 README.md 파일에 사용법 
다른 것 처럼 README.md에 사용법을 적어놓도록하자. 


STEP.5 전체구성 확인 
Git으로 최종으로 잘 동작되면, Tag를 넣어, 올리고 전체구성을 다시 확인 


  • 만들어진 Custom Github Action 사용법 
이제 사용이 가능하며, 실제 사용방법은 espressif로 보면 될 것 같다.

    runs-on: ubuntu-latest
    name: A job to say hello
    steps:
      - name: Hello world action step
        id: hello
        uses: actions/hello-world-docker-action@v2

상위예제는 아래에 만들었을 경우인 것 같음 

개인 or 조직 
아래와 같이 개인 이나, 조직 기반으로 만들면, 상위에 한번 개인 or 조직이름만 추가해주면 되는 것 같음 


3.4 Espressif사 의 Custome Github Action 분석 

Espressif에서는 본인들의 Github Action을 확장하여 사용하고 있으며, 이를 간단히 분석가능하다. 
매번 느끼지만, Espressif에서 많은 것을 보고 배우며, 잘 만들었다. 
JIRA와 Github Project와도 Sync를 할 수 있도록 Github Action을 만들었으며, 다양하게 만들어서 예제로 좋은 것 같다.

  • Espressif 의 확장 Custom Github Action 
상위의 Custom Github Action Manual대로 만들었으며, 쉽게 이해가 가며 다양한 예제가 존재

  • Github 의 Project 의 Issue 들을 JIRA와 Sync 작업 및 기타 
예제가 너무 좋은 것 같으며, JIRA와 Github Project를 같이 사용하면 괜찮을 것 같다.
나의 경우는 현재 Github Project도 괜찮다. 
release zip으로 예제 

소스를 보면 쉽게 이해가 가며, 역시 잘 만들어 놓은 것 같다.

11/21/2023

Github Action 기본사용법

1. Github 의 Cloud DevOps CI/CD 

이전에 간단히 Github의 Action을 간단히 소개했는데, 관련부분에 대해 좀 자세히 기술하도록 하겠다. 

Github의 변경사항 정리 
이전 Github의 최근 변경사항 정리 


1.1 Github Action 제한과요금제 

일단 Free 요금제도, 현재 거의 마음대로 사용가능한 것 같으며, 다만 시간과 각 부분이 제한이 있을 뿐이다.
Build 와 Deploy를 매번 할 필요도 없거니와, Free 요금제로도 현재는 IoT는 거의 쓸만한 것 같다.

다만 아래의 제한과 요금제를 반드시 확인하며, Github의 정책이 변경될지 모르니, 수시로 확인

  • Github Acton 의 제한 과 요금제  
현재 달마다 갯수로 제한을 하며, 각 요금제에 따라 반드시 확인 



1.2  Github Action 사용량 확인 

Github Action을 사용하면 각 사용부분을 확인하도록 하자 

  • Github 본인계정으로 Action 량 확인   
Github 본인 계정으로 Login 후, Setting-> Billing and Plans 

> Github Action 사용량확인 
Action , Package 뿐만 아니라, 각 Codespace 비롯하여 각 부분 사용량이 나옴 

> Github Action 제한방법
아래 Payment를 설정안하면, Action 부분도 설정못하므로 의미가 없음  

> 유료로 Github Action 사용할 경우, Payment 설정 
나의 경우는 설정안함 



2. Github의 Action 이란 

DevOps 의 CI/CD 하면 요즘 Cloud 기반으로 하는데, Github Action 역시 Runner(Virtual Machine) 기반으로 Cloud 사용하는 것 같다. 
이전에는 주로 나의 경우, CI/CD 이용한다면, Local/Cloud/Remote 기반이면 Jenkins or 무료/유료 Cloud기반이라면, CircleCI 많이 이용 했을 것이다.
이제는 Github에서 제공하는 Github Action로도 CI/CD 간단한 것들은 이곳에서 해도 괜찮은 것 같다. 

참고로, 이번에 CircleCI 로그인하니, 기능변경이 너무 많이 되어졌으며, 변경사항을 새로 알아야 할 것으로 생각되어진다. 
CircleCI로 사용할지도 다시 생각해야함(현재 무료사용자) 

  • Github Action 설명 
Github Action 부분은 Github에서 자세한 설명이 있으므로, 이것만 읽어도 알것이라 생각됨 


  • Github Action 전체구조 
기존에 사용하던, 다른 Script와 거의 유사하지만, 아래와 같이 Event를 별도로 정의하는게 가장 큰 특징으로 보인다. 
Cloud이므로, Virtual Machine 기반으로 각 사용하여 동작하며, 더불어 Docker까지 확장하여 사용가능하다. 
  1. Event :  Github의 Webhook로 Git에 대한 Event Callback 
  2. Runner1: Flowchart기반으로 각 실행1 진행 
  3. Runner2: Flowchart기반으로 각 실행1 진행 
https://docs.github.com/ko/actions/learn-github-actions/understanding-github-actions

  • Github Action 전체예제 
전체는 간단하게 YAML으로 Script로 작성하며, 간단하게 아래의 예제를 보도록하자.
자세히 설명을 해주어서, 내가 구지 설명을 해야할 정도로 쉽다. 

2.1 각 YAML Script 내부 필수 정보(workflow) 

Github에서 너무 자세히 설명해주어서, 내가 구지 설명을 안해도 될 거 같아 필요부분만 링크를 한다. 
각 Github Repository에 .github/workflow/xxxx.yml 로 Script을 구성하면된다. 

  • Github Action의 Workflow 기본적인 사용방법
Github Action을 만들때, Workflow 기본적으로 작성법 

  • Github Action 내부에서 사용되어지는 context
반드시 봐야하며, 각 YAML Script에서 사용되어지는 구문이므로 확인 

  • Github Action 내부 환경변수 사용 
Linux shell 에서 보통 많이 사용 



2.2 Action Event 기능 

이 부분은 이전에는 Webhook를 이용하여 사용하였는데, Github Action Script에서 쉽게 정의가 가능하다.
간단히 설명하면 다음과 같으며 주로 많이 사용할 것이 아마 Git Event일 것이다. 
  1. Git 의 관련된 Event
  2. Github 의 Issue Event
  3. Github 의 label Event 
  4. 기타 등등 

  • Webhook 관련내용 
일반적으로 Webhook는 주로 많이 볼 수 있는 것이 AWS Lamda 와 Github Webhook일 것 같다. 
Event가 일어날 경우, 이를 알려주는 API로 많이 사용되어지며, 아래의 내용을 참고하자. 


  • Github Action 의 Event 기능 
Event를 사용하는 다양한 방법을 소개하며, 상위의 Webhook의 기능이라고 볼수 있다.  

  • Github Single Event 실제예제 분석 
Github 의 Push Event가 발생할 경우, branches 조건 과 아래 tags 조건을 보고 Event를 동작한다.
상위 두 개 조건(branches/tags)을 And 연산하지 않고 OR 연산하여 동작하며, 이를 Filter 라고 함 
  1. Push 후 branches 이름 확인 
  2. Push 후 tags 이름 확인  
  on:
  push:
    # Sequence of patterns matched against refs/heads
    branches:    
      - main
      - 'mona/octocat'
      - 'releases/**'
    # Sequence of patterns matched against refs/tags
    tags:        
      - v2
      - v1.*

  • Github Action 다양한 각 Event 동작 예제들 
상위 내용은 workflow-trigger 전체설명 

Single Event 와 Multiple Events (e.g. push, fork, pull_request)

Filter 역할로 include 로 포함하여 OR연산으로 동작  (상위와 동일) 

Filter 역할로 exclude 로  제외도 가능(e.g. branches-ignore, paths-ignore) 

Github Action 다양한 확장 Event 기능 
다양한 Event Trigger 제공해고 있으며, 다 사용해보지 못했지만, 대충 이해가능 



2.3 Github Action 실제사용 예 

나의 경우, 간단히 테스트를 위해서 사용했으며, 잘 동작되는 것을 확인하였다. 
Event는 Github에 Push 될때,  Tag가 있을 경우에만 동작하도록 함 
즉 Release 목적으로만 만들었으며, 사실 오직 Github Action 테스트 하기 위해서 만듦
좀 더 고급스럽게 하며 Docker 기반으로 하면 된다.  




2.4 Github Action 실행동작 및 결과 

실제로 사용해보니, 꽤 좋으며, 확장하여 Docker기반으로도 사용가능하다. 

  • Github Virtual Machine 확인 
  https://docs.github.com/ko/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners


  • Github Action 진행과정 
Github Action에서 자동으로 CI가 진행 된 후 CD가 됨



  • Github Action 의 결과확인  
자동으로 Release가 되며, 상위 Script에서 내가 또 별도의 File도 추가하였다. 
아래와 같이 Github Action으로 되었다고 하며, 
내가 원하는 대로, 각 정도도 포함되어있으며, Assets도 별도로 추가한대로 추가되어져 있다. 




11/17/2023

Github 최근 변화사항 정리

1. Github 변화사항 정리   

최근에 Github을 많이 사용하면서, 이전과 많이 변화 되어 진게 많아 각 부분을 간단히 정리한다.
사실 생기지는 다 오래되어진 기능이나, 최근에 변화를 많이 느끼는 것 같아 각 부분을 정리한다. 
또한 Github Setting 역시 이전과는 많이 변경되어졌다. 


Github Docs
설명서도 한글지원 된다. 


1.1 Github 의 보안인증강화 

  • Github 의 인증 2 단계인증 
나의 경우는 Beta일 때 부터 Google OTP를 이용하여 사용하였는데, 이제 거의 사용을 해야 하는 듯 하다. 
그리고, Android App 이름도 Google OTP에서 이제 Google Authenticator으로 변경되어졌다. 

Github 인증 


1.2 Github 의 Web-IDE 기능제공 

간단하게 Web Browser에서 VS Code 같은 IDE를 사용가능하며, 이외 다양한 IDE 확장제공을 해주고 있다. 
기능은 점점 확장되어지는 것으로 보여지며, 돌아가는 원리는 Web Browser에서 동작하는 Node-RED 생각하면 될 것 같다.  
내가 현재 좋아하는 Node.js로 구성을 했을 것 같다. 
(Node-RED 블로그 글도, 마무리해야하는데, 게을러서 못하고 있음)


  • Github의 Codespace 기능제공 
Cloud Web 기반의 Github에서 IDE Program인, VS Code를 사용할 수 있지만, 아직 초기단계라 거의 많이 지원이 안되어지며, 
자꾸 Web VS Code가 죽으며, 아직 VS Code Extension 도 너무 제한적이다. 
현재 시점이 지나서 좀 나아진 다음에 사용해도 안 늦을 것 같다. 

Github의 Codespace
Github에서 Cloud 기반으로 Virtual Machine 위에서 상위 VS Code 및 각 IDE를 제공해줌 
  
Github의 Web VS Code IDE 
VS Code 역시 node.js로 된걸로 알고 있으며, 이 것 역시 아마 Node.js 기반으로 돌아 갈것이라고 생각되어진다.

Github의 Web JetBrain IDE
사실이게 뭔지 몰라서, 사용해보고 있는데, 왠지 괜찮을 것 같다.
Jetbrain Site가면 각 IDE Tool 존재하여 나의 경우, CLion 사용했지만, 상위처럼 연결을 못함  


최근에는 Jupyter역시 많이 변경되어진 것 같으며, 이부분도 나중에 다시 확인해보도록 하겠다.

  • Github Codespace -> VS Code 
본인 Repository에 가서 우측 Code 버튼 -> Codespace에서 처음 한번 생성 한 후, VS Code 처럼 이용가능  
사용할때마다 더 VS Code가 개선되어지며, Extensions의 Program도 Upgrade되기 때문에 현재 그나마 좋음 

주의해야 할 것은 Cloud기반으로 하므로, 무료는 여러개를 동시에 사용이 안되어지는 것 같으며, 
Local VS Code와도 동기화가 된다고 한다.(이부분은 아직 못함) 
  

Github VS Code 세부내용 



1.3 Github 의 DevOps-CI/CD 기능확장 

  • Github Action 확장지원
옛날에는 Circle CI 기반으로 Webhook을 이용하여 사용했는데, 이제 Webhook 거의 필요가 없을 듯하다
각 Git Event도 Script 하나로 해결되어지니, 얼마나 편한가? (하지만 또 필요할지도?)

Github Action 기능에 많이 놀랬으며, 이거 가지고도 장난칠 게 너무 많다.
내가 원하면, 내가 원하는 Github Action도 확장하여 작성가능한 걸로 보일 뿐만 아니라, 
각 다른 언어들로 Github Action을 구성하여 만들 수 있는 걸로 보인다.
더불어 Docker 역시 맘대로 사용 가능한 것으로 보인다.   

가장 막강하게 변화되어진걸로 생각되어진다. 
누구나 쉽게 Cloud 기반으로 DevOps CI/CD를 이용하도록 하자.

Github Action CI/CD 구성 

Github Action 시작

Github Action 기반으로 Package 작업

Github Action 요금제

이부분은 누구나 쉽게 배울 수 있어, 추후 별도로 나중에 더 자세히 기술하겠다. 
현재 개인들에게는 무료로 제공을 해주는 것 같다 (현재 무료로 이용중이니)

Github Action 덕분에 최근 Circle CI를 들어가보니, 왠지 이거 때문에 Circle CI가 많은 변화가 있는 것 같다.
이제 Circle CI는 사용만 골치아플 뿐이지만, 추후 또 사용할 일 있다면 그때 다시 확인하자.


1.4 Github 의  Code 자동생성 

ChatGPT도 있는 마당에 내가 가장 기대하는 기능이지만, 무서운 기능으로 생각되어지며, 나중에 회사돈으로 사용할 일 있다면,
그때 사용하겠다. 

  • Github  Copilot 지원 
가장 기대되는 기능으로, 자동으로 Code를 작성해주는 기능으로  현재 무료가 아닌 것 같아, 함부로 사용을 못하지만,
현재 ChatGPT가 있으나, 궁금하기는 하다. 

Github Copilot 

Copilot 가격정책 



1.5 Github 의 기술블로그 및 Website 운영 

나의 경우는 별로 선호하지 않는 기능이며, 지금도 계속 변화 중이니, 나중에 다시 확인해보도록 하겠다. 
나도 대충하나 만들어놨으며, 별로 사용안한다. 

  • Github 의 Pages 기능확장 
각 기술블로그를 만들수 있으며, 사실 나는 선호하는지 않는다. 

Github Pages



1.6 Github 의 Project 관리와 문서관리  

  • Github 의 Project 기능제공  
Github 기반으로 Kanban 보드 부터 거의 JIRA 처럼 제공해주고 있으며, 지금도 계속 변화 중이다. 
현재는 지속적으로 사용안하지만, 개인적으로는 JIRA 만큼 기능제공해주고, 계속 변화 중이라,
나는 만족하며, 이전것은 Classic 이라고 하고, 또 새로운 버전 나왔다.  
각 기능은 아래 Manaul로 알아 보도록 하자. 

Github Project 
기본적으로 Project을 만들고 나서 아래 것들을 사용해야하며, 각 Issue와 label 및 Milestone도 별도로 사용가능하다. 

Github Issues
지속적으로 변경 중이며, 계속 Manual을 보도록~~~ (거의 JIRA처럼 사용가능)

Label 으로 구분 및 Milestone 기능확장 
꽤 괜찮은 것 같으며, 구분하기에 좋다 


  • Github 의 docs 와 wiki 문서관리 
Github에서 기본적으로 각 Repository에 README.md 기반으로 docs directory  만들어 각 Markdown기반으로 문서관리가 가능하다.  
이 뿐만 아니라, Wiki 와 이 Markdown의 확장부분을 보면되겠다. 
사실 사용하기가 좀 불편하기는 하지만, 무료로 사용한다는 점에서 강점이라고 생각되어진다.


Markdown 문서관리 
Github README.md 기반으로 docs 내부로 확장작성하여 문서작성가능. 

Markdown 기반으로 Diagram(Mermaid) 뿐만아니라 계속 다양하게 확장 중. 

이외 README.md에 Badge기능도 있으며, 이를 통해 각 연결된 Interface Website 결과도 쉽게 알수 있다. 

Github Wiki 
Github에서 Wiki를 지원 (요즘 거의 다 지원되니) 


Readthedoc 사용 
상위 docs Directory를 이용하여 쉽게 Readthedoc기반으로 문서관리 


1.7 Github 의 요금정책 

지속적으로 변경되어지니, 각 부분을 반드시 확인하도록 하자. 난 Free 요금제 

Billing and Plans

10/16/2023

5G Architecuture (자료수집, 글작성중)

1. 5G 관련사항 정리 


5G Overview 관련내용
이전의 5G Overview에 대해 알아봤으니, 전체구조에 대해서 알아보도록하자.

5G 관련학습
관련내용은 아래의 에서 2장을 내용을 듣고 관련자료를 수집후, 각 정리한다.

상위강의는 들었으나, 상위 자료를 직접적으로 올리수 없으므로, 관련자료들을 찾도록 하겠다.

RF Information 
이 부분도 빨리 각 부분을 분할하여 정리를 해야하는데, 아직 시간이 없음 


1.1 넷매니아 자료모음

넷매니아
넷매니아가 아직도 존재하는지  몰라는데, 아래와 같이 존재하며, 관련자료들을 찾도록하자. 

넷매니아의 각 주파수 대역 확인 

각 용어정리 및 5G 구축모델 

Samsung vendor 관련자료


일단 상위 강의 중심처럼,
  1. 기존 4G 전체구성 과 5G 구성 비교되는 자료 
  2. 5G의 전체 구성자료 
  3. 5G의 각 용어 간단히 정리 
  4. 각 연결구성 부분 자료 
좀 더 자료를 확보 !!!! 

1.2 5G Architecture 

Telecom Network 

RAN(Radio Access Network)

5G 전체구성 그림 좋음 

eCPIPRI

AMF(Access & Mobility Management Fucntion)
AUSF(Authentication Server Function)
SMF(Session Management Function)


9/21/2023

RF-RADAR 관련자료 수집

1. FMCW 의 RADAR 관련자료 수집 

이 부분은 현재 다니고 있는 회사가 Radar 회사이다 보니, 자세히 기술하지 못하며, 
아래와 같이 간단히 자료수집만하며, 이전에 Blog에 Post 한 FMCW Radar 자료들은 전부 블로그에서 이미 삭제 완료했다. 
 
세부사항은 TI RADAR의 설명내용을 보면, 쉽게 이해가 가며, 자세히 기술되어져 있다. 

아래는 RF 관련자료 

  • 앞으로 RADAR의 방향
개인생각으로, 추후 어떻게 변경되어질지 Trend를 봐야하며, FMCW기반으로 사용 (이유아래와 비교해보면 답이 나옴) 
저번 자동차 세미나에서, RADAR 관련 강사가 이야기 한 아래부분을 좀 더 확인 
   FMCW -> PMCW ??, 아래에 별도 정리가 필요(이미 사용한다고 함)  
   FMCW -> OFDM ?????, 아래에 별도 정리가 필요(논문에 별도로 있음)  


  • TI 관련기반으로 자료수집 
이 부분은 TI 와 NXP기반으로 자료만 수집하며, 관련내용은 별도로 서술하지 않겠음
아래 세부적으로 수집한 README 자료도 삭제함(관련자료도 삭제함)  

8/22/2023

5G Overview

1. 5G 관련사항 정리 

Udemy 다음강의를 듣고, 정리를 하도록 하겠으며, 이곳에 주신 제공해주자료들은, Blog에 올리수 없을 것 같아, 
해당 관련자료를 검색하면서,각 부분들을 직접 Review를 하면서 새로 정리하도록 하겠다. 


  • AWS 5G 설명
AI/ Smart IoT/Vehicle , 4G에서 벗어나, 확장되어진 5G로 아래의 각 개념을 정리 


1.1 1G/2G/3G/4G/5G 변화 

각 변화를 대충 눈으로 보면 될꺼 같으며, 중요한 것은 4G 와 5G 의 차이만 알면될 것 같다.
구지 이 긴역사를 달 알필요가 있을까 

  • 1G/2G/3G/4G/5G의 변화 
  1. 1G: Analog Voice 
  2. 2G: Digital Voice 변경과 문자 
  3. 3G: Digital Voice 와 문자, Multimedia 
  4. 4G: Digtal  Voice 와 NB-IoT, VoLTE
  5. 5G: Digital Voice 와 각 IoT 와 C-V2X 


https://commsbrief.com/what-do-the-terms-1g-2g-3g-4g-and-5g-really-mean/

AMPS (Advanced Mobile Phone System)
NMT (Nordisk MobilTelefoni or Nordic Mobile Telephone)
TACS (Total Access Communications System) 
C-Netz (Funktelefonnetz-C or Radio Telephone Network C)


https://commsbrief.com/what-do-the-terms-1g-2g-3g-4g-and-5g-really-mean/

4G LTE(Long Term Evolution)
5G NR(New Radio) 


아래사이트에 너무 자세히 설명을 해주므로 여기를 참조

1.2 5G Standard and Specification

전체적인 Concept은 ITU 이지만, 모든 세부적인 내용은 3GPP를 봐야한다. 

  • ITU(International Telecommunication Union)
5G의 전체적인 Concept 과 Service 및 관련부분을 기술했다고 하며, 아직 직접 다 찾아 보지를 못했다.  
ITU의 문서는 전체적인 5G Concept이며, 세부 기술내용을 본다고 하면, 아래 3GPP기반으로 봐야함 

  • 3GPP Specifcation & Technologies Releases
세부적인 5G 관련 Specification 이며, 오래전에 본적이 있으나, 너무 오래되어 많이 까먹으며,
가능하면, 각 부분을 정리하도록한다. 
https://www.3gpp.org/specifications-technologies/releases


3GPP 내의 각 기술 검색 
3GPP에서 각 Release를 쉽게 검색해서 찾도록 하자. 



  • 3GPP TSGs(Techincal Specifications Groups)
 각 Group 과 역할을 설명을 해주고 있으며, 이 부분을 보도록하자. 

https://www.3gpp.org/3gpp-groups

쉽게 검색해서 관련문서 확인 


2. 5G System Overview  

3GPP에서 5G에 대해 잘설명해주고 있다.

대체적으로 아래 사항을 주로 언급하며, 이외사항은 상위에 3GPP Overview 보도록하자.

eMBB(Enhanced broadband)
기존보다 늘어난 주파수 대역폭(Bandwith)가 늘어나, 전체 Data Bandwith가 늘어날 것이며, 
한마디로, 기존 4G 속도가 빨라진 것임 

MMTC(Massive machine-to-machine communication)
상위 3GPP에는 mIoT(Massive Internet of Thing) 와 Flexible network operation 
전화 와 Internet 이외에도  확장된 Commnication , 즉 Smart IoT 와 Vechicle 자동차(C-V2X)
전화만이 아니라, Data Bandwith가 늘어났으니, 더 많은 IoT 가 늘어날 것이며, C-V2X도 확장되어진다.

URLLC(Ultra-reliable low latency communication)
4G보다 더 적어진 Latency(빠른 응답성) 와 reliability(신뢰성)이라고 한다. 
근데 신뢰성은 잘 모르겠다.  

  • 5G의 강점이 상위 3개로 요약 Verizion 에서 관련 설명자료 

https://www.verizon.com/about/news/5g-understanding-embb-urllc-mmtc




2.2  5G 나라별(Country) 정보

각 나라별 5G 관련정보이며, 한국은 아래와 같다.  

https://blog.router-switch.com/2020/06/5g-nr-and-list-of-5g-nr-networks/


  
2.3 5G  전체구성 확인 

자료를 찾다가, 화웨이가 가장 설명을 잘해놓다니, 많이 놀랬으며, 일단 아래부터 이해하기로 했다.

  • 5G의 기본구성 
https://info.support.huawei.com/info-finder/encyclopedia/en/5G+Transport+Network.html

  1. RAN(Radio Access Network):  4G/5G의 물리적 부분이라고 생각하면 되겠다.
  2. Transport network : 4G or 5G의 Protocol 인 것로 생각되어짐  
  3. Core Network: 무선 or 유선 Network 망을 의미하는 걸로 생각되어짐 

  • 5G 전체구성도
일단 완벽하게 이해하지 못하겠으며, 한국도 이렇게 되는지는 모르겠으며,아래부터 그냥 하나씩 보자.
하단 E2E SRv6 EVPN 와 Infrastructure Layer
Backbone 망과 5G 연결부분 말하는 것 같으며, Ring(아마 Token Ring??)기반으로 구성이 되어지는 것 같다. 
FTTx(광통신)라고 생각하고 넘어가도록하자. 

iMaster NCE에서 보면, 각 3개군으로 속도기반으로 분할해서 운영하며, 최종 상단의 Cloud 그림(아마 Network의미??)이 아마 최종 연결단 인 것 같다.
  1. Access: 50GE 기반으로 Access Ring사용하며, 2 개의 종단 왼쪽 개별 아이콘들상위 Campus MEC 연결 
  2. Metro: 100GE or 400GE 사용하며, 상위 MEC/EDC 와 RDC로 연결  
  3. IP Core: 400GE 로만 초고속으로사용하며, 상위 CDC로 연결  



상위 링크를 연결해서보면, MPLS까지 설명해놓았으며, 2000대 초반, ATM이후로 나의 경우는 지금 처음본다. 
추후 MPLS 자료가 필요하다면, 그때 다시 링크로 연결하도록 하자.

  • FlexE
Flexible Ethernet이라고 하는데 이 부분과 아래의 5G QoS하고 Mapping 되는 것이라고 생각하면 될것 같다.



상위 Slice가 각 QoS라고 생각하면 될꺼 같다. 
  1. AMF(access and mobility management function)
  2. UPF(user plane function)
  3. SMF(session management function)


2.4 5G Key Capabilities 와 Use Cases

ITU문서는 대체적으로 전체적인 컨셉으로 전체구조와 그림은 이곳에서 가져오도록 하자.

  • 5G Key Capablities
쉽게 Radar Graph로 이전세대와 비교하여 각 기능의 개선점을 쉽게 파악가능 
https://www.itu.int/en/ITU-D/Regional-Presence/CIS/Documents/Events/2017/06_Saint_Petersburg/Presentations/ITU%20Workshop%2019.06%20-%20Denis%20Andreev%202.pdf

  • 5G Use cases 
  1. eMBB(Enhanced broadband)
  2. MMTC(Massive machine-to-machine communication)
  3. URLLC(Ultra-reliable low latency communication)
각 중요포인트 별로 각 Use cases들을 보면 되겠다. 

  • 5G의 시장성 
  1. e-Health  (시장성, 별도로 시장성을 확인해야함, 5G에서 가장 시장성이 높다고함)
  2. Self-driving Car (C-V2X)

주로보면, Smart IoT 와 C-V2X일 것 같은데, Smart IoT에 많은부분이 확장되어 들어갈 것이라고 생각되어진다.
일단 간단히만 생각해봐도 Smart City 와 Smart Home/Build 있다. 


  • 기타링크 

8/11/2023

Mkdoc 와 Github 문서정리

1. Mkdocs 

이전에 Sphinx 와 Mkdocs 기반으로 환경을 구축하여 간단하게 테스트를 한적이 있는데, 
Mkdocs만으로 쉽게 Github의 Markdown 문서를 관리하는 법을 간단히 소개한다. 

이유는 Mkdocs는 Markdown 으로만 사용하기 때문에 Github와 더 잘 어울린다. 
다만 아쉬운것은 Sphinx에 비해 Plugin이 좀 떨어질 뿐이다. 

  • ReadTheDoc (Mkdocs/Sphinx 둘 다 지원)
ReadTheDoc 사용법 및 Sphinx 와 Mkdocs 비교 (Doxygen 기본 사용법)

  • Mermaid.JS 사용예제
Github에서는 이미 Markdown에 mermaid를 제공하지만, 아래와 같이 Mermaid.js로 해도됨


  • 기본설치 및 테스트 진행
가급적 Linux 기반으로 설치하도록 하며, Window에서는 WSL를 통해서 하자  
$ pip install mkdocs
$ sudo apt install mkdocs 
$ mkdocs new mkdocs-project
$ cd mkdocs-project
$ ls docs mkdocs.yml $ cat mkdocs.yml #설정확인 site_name: My Docs $ mkdocs serve # 에러발생하여 아래 Package Version 변경으로 해결 INFO - Building documentation... INFO - Cleaning site directory INFO - Documentation built in 0.08 seconds INFO - [16:11:08] Watching paths for changes: 'docs', 'mkdocs.yml' INFO - [16:11:08] Serving on http://127.0.0.1:8000/ INFO - [16:11:11] Browser connected: http://127.0.0.1:8000/ INFO - Shutting down... $ mkdocs build # site에 webpapage 와 xml 생성확인 $ mkdocs build INFO - Cleaning site directory INFO - Building documentation to directory: /home/jhlee/project/mkdocs-project/site INFO - Documentation built in 0.03 seconds



1.1 Mkdocs PDF 배포 

아래와 같이  mkdocs-with-pdf를 별도 설치진행 
$ pip install mkdocs-with-pdf 

$ vi mkdocs.yml  #plugins 추가 pdf 
site_name: My Docs
plugins:
    - with-pdf

$ mkdocs build  # PDF 파일 과 HTML 파일 생성  
INFO     -  Cleaning site directory
INFO     -  Building documentation to directory: /home/jhlee/project/mkdocs-project/site
INFO     -  Number headings up to level 3.
INFO     -  Generate a table of contents up to heading level 2.
INFO     -  Generate a cover page with "default_cover.html.j2".
INFO     -  Converting  alignment(workaround).
INFO     -  Rendering for PDF.
INFO     -  Output a PDF to "/home/jhlee/project/mkdocs-project/site/pdf/document.pdf".
INFO     -  Converting 1 articles to PDF took 0.7s
INFO     -  Documentation built in 0.70 seconds

$ tree      # tree 명령어로 전체구성 다시 확인 
.
├── docs                # docs 밑에, Markdown 구성하여 문서 구성 , 이는 Github에서 호환사용가능
│   └── index.md          # 기본 문서확인
├── mkdocs.yml             # 상위 설정확인
└── site                # mkdocs build 결과 (HTML, PDF)             
    ├── 404.html
    ├── css
    │   ├── base.css
    │   ├── bootstrap.min.css
    │   └── font-awesome.min.css
    ├── fonts
    │   ├── fontawesome-webfont.eot
    │   ├── fontawesome-webfont.svg
    │   ├── fontawesome-webfont.ttf
    │   ├── fontawesome-webfont.woff
    │   └── fontawesome-webfont.woff2
    ├── img
    │   ├── favicon.ico
    │   └── grid.png
    ├── index.html
    ├── js
    │   ├── base.js
    │   ├── bootstrap.min.js
    │   └── jquery-1.10.2.min.js
    ├── pdf
    │   └── document.pdf
    ├── sitemap.xml
    └── sitemap.xml.gz


mkdocs-with-pdf


1.2 CHM (Window HTML 설명서)

chm파일은 Window에 주로 API 설명서를 구성하기 위해서 예전에 많이 사용했다. 

  • chm 파일 viewer 설치  (WSL 설치가능, Linux 지원)
sudo apt-get install xchm 

상위를 실행시키면 쉽게 Viewer 확인 


  • HTML -> CHM 파일 생성 방법 링크 
다 확인해보지 않고 링크만


1.3 mkdocs 문제사항 정리 

Linux에서는 거의 발견못했는데, 주로 Window 기반의 WSL에서 실행했을 경우 발생하였다.  
원인을 보면, 버전의 호환성문제로 각 버전을 맞춰 재설치를 진행

  • mkdocs serve 에러문제 
 AttributeError: 'zipimport.zipimporter' object has no attribute 'exec_module'
$ pip install markdown==3.2.2  # 

 AttributeError: 'EntryPoints' object has no attribute 'get
$ pip install importlib-metadata==4.13.0   # (5.0.0->4.13.0)

  • mkdocs build (plugin)에러문제 
Window에서 실행할 경우 발생 
 OSError: cannot load library 'gobject-2.0-0': error 0x7e.  Additionally, ctypes.util.find_library() did not manage to locate a library called 'gobject-2.0-0' 

보통 Doxygen을 사용하면, chm file을 많이 사용하는데, Linux에서도 아래와 같이 볼수는 있다.


2. mkdocs 쉬운구성환경 

  • Mkdocs 사용방법정보 
모든정보가 다 이곳에 있어, 간단히 여기서 정리끝날꺼 같다.   


Github 와 연동 예제 


현재 나의 경우, Sphinx 보다는 mkdocs가 좀 더 Github와 Markdown으로 잘되어 이게 더 편한 것 같다. 
설정이야, 본인 theme 부터 변경해서 차근차근사용하면 될꺼 같다. 

8/01/2023

RF Information (자료수집, 글작성중)

1. Modem

통신(Communication)의 기본이며, 유선 Modem 안 사람은 쉽게 무선통신도 알게되어진다. 

이번 5G를 정리하면서 Radio 뿐만아니라, 각 RF 관련사항들을 정리하며, 아래의 링크 기반으로 자료수집후, 정리한다. 

아직 자료 수집 후에 글의 방향을 정하며, 5G가 아닌, 유선 or 무선 기본 글?>? 정함!
이 부분은 삭제?? 

너무 많은 자료를 수집했으며, 관련부분을 정리하도록함 (시간될때!)

필요 없다면, 유선쪽 관련내용은 추후 전부 삭제  


1.1 Radio Spectrum 

일반적인 Radio 관련자료로 시작해야 할 것 같다. 
유선을 넣으면???


1.2 WIFI 6 

이 부분은 추후 RF-WIFI 분리 

이 부분 좀 더 각 WIFI Spec에 맞게 비교분석하며, 기능별로 새로 자료 수집 

예전처럼 WIFI Spec이 없어도 될꺼 같다. 
요즘 인터넷에 자료가 넘처나서 

TWT(Target Wake Time, WIFI 6의 New Feature 기능)
배터리 or Low Power를 위해서 Target Wake Time을 두어 외부에서 Control하는 개념 

WIFI (802.11ax) 즉 WIFI 6 
각 비교가 잘되어 있어 아래부분 링크 
분명, 칩제조사별로 조금씩 다를 텐데, 그 부분까지는 파악하기가 좀 
 
OFDMA 그림과 WIFI6의 각 그림이 너무 좋음 

새로찾은 사이트

WIFI6 OFDM 와 OFDMA 차이 
내 경우는 OFDM 과 OFDMA 차이를 그냥 무선으로 생각한 나의 무식함!!!

아래그림으로 OFDM 과 OFDMA 차이를 쉽게이해 
현재 내 생각으로 OFDM에 MU-MIMO를 넣은 것으로 보임 
정확히 말하면, OFDM 에 TDM을 섞은거라고 봐야 할 것 같은데, 뭔가 찜찜함. 


OFDM 의 절차 및 설명 필요 여부??? 
왜 OFDM의 사용하는가? 
이유는 간단하다. 모든 모듈레이션을 사용하고 싶으며, 2개의 Multiplexing을 같이 사용하고 싶어서다. 
QAM이 AM 과 PM의 합성이고, 이 전체 Channel들을 Multiplexing하면, FDM 와 TDM 좀 같이 사용할 방법을 찾아서 OFDM을 사용한다. 
더불어 Guard Band도 필요 없으니, 전체 Bandwith도 줄어든다. 

송신  S/P -> IFFT or IDFT -> P/S -> add  CP -> Channel
수신  remove CP  -> S/P  -> DFT -> P/S

Python 예제 
내가 이것으로 변경해서 만들어도 될 듯하다


Beamforming
주파수가 높아질수록, 전파는 직진성으로 가게되어지는데, 이를 이용하는 기술이다.
이전에 낮은 주파수 대역을 사용할때, 사용을 못하고, 주파수가 높아지니, 
전파를 직접적으로 Control 하고 싶어하는 것이다. 
아래에 한글로 너무 잘 설명되어 있으니, 한번 나중에 이를 정리?


Wireshark
비싼장비를 이용하여 분석하면 좋겠지만, Wireshark 같이 무료 Tool 기반으로 분석할수 있는 방법을 모색 
Wireshark 802.11 Packet 분석 (Ethernet으로 Converting 된것이 아님)
역시 O'Reilly 설명!!
Wireshart 세부 Filter 설정 

WIFI support monitor mode
기본적으로 WIFI Driver가 monitor mode(sniffing)가 지원되어야 하며, 지원이 안되는 Driver 들이 많다.
Ehternet Converting 부분이전에서 sniffing 지원을 해줘야함 



1.4 C-V2X

이전에 내가 가장 주의 깊게 봤던 것으로, 이 부분의 승자가 누가 될지와 법이 어떻게 될지도? 



2. LR(Long Range)-WPAN (Thread 와 Matter 때문에)

Zigbee 기반이라고 하며, Thread라는 새로운  것이 나왔는데, 정확한 기능 부분 좀 더 
Thread 와 Matter 의 연결 확장성 도 역시 확인 
  1. Microchip 사에서는 WIFI가 아닌 BLE기반으로 연결하여 확장 
  2. Espressif 사는 Matter 와 함께 IPv6기반으로 제공, (Thread) 

추후 시간이 될때 상위 자료를 보완하여, RF-WIFI or RF-BLE로 별도로 분리
요즘 예전부터 정리하던 것도 빨리 정리해야함 
아직 쓰던것도 많이 남아 있어 이부분도 같이 정리해야함 


2.1 Smarthing Develop

Samsung이 밀고 있는 것이며, LG는 내가 보기에는 별로라서 이 부분은 세부적으로 확인 

개발방법

1. SDK 기반의 Matter 직접 Device이용
Device가 직접 Matter를 지원되는 경우, 이를 이용

2. Samsung의 Station 에 연결 
Device가 Samsung에서 제공하는 Station에 연결사용 (Zigbee 

3. Cloud 기반의 Lamda 이용하여 Hook 방식

4. Automation :  상위 기능들을 묶는 기술 



3. RF 의 일반적인 것들?


RF Wireless World 
내가 좋아하는 사이트이며, 이 부분을 좀 더 한글화? 


Multiplexing 
통신의 기본인 Multiplexing FDM TDM 을 설명?? 그냥 통신책봐도 이해가 될 듯. 
FDM 과 OFDM 차이 
좋은 자료이며, 이부분은 1Post해야 할듯, 

OFDM 와 OFDMA 차이 
지금까지, OFDM 유선   OFDMA 무선으로 만 생각했는데, 좀 나의 상식이 깨짐 

SISO 와 MIMO의 차이
기본개념은 간단하며, MIMO가 되면 Channel 이 등장하며, Multiplexing 어떻게 하냐가 관건이다.

FDMA vs TDMA vs CDMA
FDMA 와 TDMA는 알겠지만, CDMA이는 예전에도 그랬지만, 정확한 차이를 구분짓기가 어렵다.
이 부분은 예제를 찾아야함 

TDD vs FDD
상위에서 Multiplexing 하면 반대 Duplexing 하여 각 Channel을 분리하는 방법


  • LoRAWan 
이전에 직접 LoRa Gateway 와 KCMVP를 Reversing Engineering으로 하여 HW 암호화로 직접 개발해봤기에, 이부분도 나중에 세부 정리?? 
이부분은 1 Post로 각 Semtech Datasheet 와 함께 정리해야하나???
추후에 다시 이 부분은 생각 



WIFI

WIMAX
오래전에 잠깐 Driver로만 만들었으나, 요즘은 거의 안쓰는 것 같음.


Anthena 
안테나의 기본내용은 알아아야 할꺼 같으며, 관련부분 도 가능하다면 자료 수집 

추후 시간된다면, TI Anthena 부분 별도자료수집 확인