Go언어에서 Tag 사용

Go 언어에서 json을 다루다 보면 아래와 같은 구조체를 볼 수 있을 거다.type User struct { Name string `json Age int `json}GoLang의 구조체(struct)의 필드는 Tag를 이용해서 메타정보를 추가하는 것으로 의미를 확장할 수 있다. 위의 구조체에서 Name과 Age 필드는 각각 json 필드와 매핑되며, nil이 허용(omitempt) 될 수 있음을 의미한다. 이 정보는 Golang의 encoding/json 패키지가 json 데이터를 마샬/언마샬(marshal, unmarshal) 할 때 사용한다. 이 문서에서 태그를 어디에 어떻게 사용 할 수 있는지 살펴볼 것이다.

Atlassian crowd를 이용한 SSO

Atlassian Crowd는 Jira, Confluence, Bitbucket 등을 통합운용하기 위한 SSO(Single Sign-On) 솔류션이다. Atlassian 제품외에도 GitLab, nexus3와 같은 솔류션을 통합 할 수도 있다. Crowd SSO를 지원하지 않는 애플리케이션이라면 Crowd API를 이용해서 직접 개발해도 된다. 물론 Active Directory, LDAP 도 지원한다.나는 Crowd를 기반으로 Jira, Confluence, GitLab의 계정을 연동해 보려 한다. 그리고 GoLang-Crowd 패키지를 이용해서 Crowd 연동 되는 인증서버를 직접 구축할 것이다.

Docker 기반 Mattermost 설치

Mattermost는 오픈소스 기반의 설치가능한(self-hostable) 온라인 채팅 서비스 및 파일공유 소프트웨어다. Slack의 오픈소스 버전이라고 할 수 있을 정도로 Slack과 유사한 인터페이스와 기능들을 제공한다.효과적인 커뮤니케이션 시스템 구성은 개발환경에 매우 중요한 요소다. 나는 Slack, Jira, Confluence 조합을 주로 사용했다. 매우 훌륭한 조합이긴 한데, 보안 이슈 때문에 Slack을 사용 할 수 없는 경우가 있다. 이때 mattermost를 slack 대안으로 사용 할 수 있다.

Service Mesh에 대해서

서비스 메쉬(Service Mesh)는 마이크로서비스 아키텍처(MSA - Microservice Architecture)를 구성하는 애플리케이션들이 서로 데이터를 공유하는 방식을 제어하는 방법이다. 서비스 메쉬는 애플리케이션 계층이기 때문에 소프트웨어 설정으로 유연하게 데이터 공유하는 방식을 관리 할 수 있다. 이러한 유연함은 컨테이너화 된 임시 애플리케이션으로 구성되는 MSA 서비스에서 특히 중요한 요소다. 서비스 메쉬는 아래의 기능들을 포함한다.

Circuit Breaker 패턴

대부분의 소프트웨어들은 다른 프로세스를 호출하기 마련이다. 내부에 있는 프로세스를 (IPC를 이용해서) 호출하는 경우도 있겠지만, 특히 MSA, OpenAPI가 일반화된 요즘에는 다른 네트워크에서 실행 중인 프로세스 원격으로 호출하는 경우가 많다.IPC 통신과 원격 통신하는 소프트웨어의 가장 큰 차이점은 "상황을 완전히 통제 할 수 없다는 점"이다. 요청이 도달하지 않거나, 제한시간내에 응답이 없는 경우 원격 통신 소프트웨어는 할 수 있는게 없다. MSA의 경우 하나의 프로세스에 문제가 생길 경우, 연속적으로 다른 프로세스에 영향을(cascading failures) 줄 수 있다.

Dart

Dart는 멀티 플랫폼위에서 작동하는 클라이언트 앱의 개발을 목적으로 만들어진 클라이언트 개발에 최적화된언어다. 구글이 개발한 언어이며 모바일, 데스크탑, 서버, 웹 애플리케이션을 만드느데 사용한다. Dart는 객체지향, 클래스, 가비지 컬렉션을 지원하는 언어로 C 스타일 문법을 가지고 있다. Dart는 네이티브 코드(native code)와 Javascript로 컴파일 될 수 있다. 기타 interfaces, mixins, abstract classes, reified generics, type inference를 제공한다.

Dart Tour

의 번역 작업

  • yundream
  • 2020-05-07 13:40:28
  • 40197
  • tags:

Dart Tour - 설치

우분투 리눅스 19.04 에 Dart를 설치했다. 편집기는 vim을 이용하고 있다. flutter는 Android studio를 쓰고 있는데, 언어를 학습하는데에는 너무 무겁다. 언젠가 VS Code로 설정해봐야 겠다.$ sudo apt-get update$ sudo apt-get install apt-transport-https$ sudo sh -c curl https$ sudo sh -c curl https$ sudo apt-get update(2018년 7월)현재 버전은 2.4.0이다.$ dart --versionDart VM versionvoid main() { print("Hello, World!");}실행해보자.# dart hello.dart

PWA - Progressive Web Apps

PWA(Progressive Web App)은 HTML, CSS, JavaScript를 포함한 일반적인 웹 기술을 사용하여 개발된 응용 프로그램 소프트웨어다. 표준적인 웹 브라우저를 포함한 모든 플랫폼에서 작동한다. 이렇게 봐서는 일반적인 웹 애플리케이션과 무슨 차이가 있느냐 하겠지만, 오프라인 작업, 푸시 알람, 데스크톱 및 모바일로의 설치(네이티브 응용 프로그램과 유사한 사용자 환경)가 가능하다. 웹 애플리케이션이기 때문에 App Store, Google Play와 같은 배포시스템이 필요 없다.

Simple Web Server

Go언어는 "net/http"라는 웹 애플리케이션 개발을 지원하는 패키지를 제공한다. 매우 사용하기 쉽고, 강력하기 때문에 "다른 프레임워크 사용 할 필요 없다. net/http 만 써도 충분하다"라는 평가를 받기도 한다. 풀 프레임워크 목적으로 사용하기에는 부족하지만 REST API 서버 개발 목적이라면 이걸로 충분하다.package mainimport ( "fmt" "net/http")func main() { http.HandleFunc("/hello", hello) http.HandleFunc("/headers", headers)