본문 바로가기

패키지4

Go - called module 과 caller module 참조: https://go.dev/doc/tutorial/call-module-code 개요 이번에는 2 개의 Go 모듈을 만들어 본다. 처음에는 다른 라이브러리나 어플리케이션에서 import 되도록 하는 모듈을 만들고, 그 다음에 이를 호출하는 호출 어플리케이션 모듈을 만든다. 호출되는 모듈 만들기 Go 코드는 package 로 그룹화되고, package 는 module 로 그룹화 된다. 모듈은 코드를 실행하는데 필요한 종속성과 Go 버전, 해당 코드가 필요한 모듈의 집합을 정의한다. 일반적으로 모듈에 기능을 추가하거나 개선하면 모듈의 새로운 버전을 배포한다. 만약 내가 작성한 모듈의 기능을 호출한 사용자가 있다면 해당 사용자는 갱신된 package 를 import 하고 운영에 배포하기 전에 새로운 버.. 2021. 11. 28.
아키텍처 - 프로젝트 패키지 구조 - 이 글은 로버트 C.마틴의 Clean Architecture를 기반으로 작성되었습니다. (가능하면 책을 읽어보는것을 추천한다.) - 개요 각 프로젝트 마다 규모나 설계자의 생각에 따라 패키지 구조를 정한다. 패키지 구조는 프로그램이 단순히 동작하게 하는데에는 크게 중요하지 않을수도 있지만, 프로그램을 파악하는데 도움이 되며 설계의 사상을 반영한다. - 계층 기반 패키지 가장 단순하고 전통적인 아키텍처다. 기술적인 관점의 계층에 기반하여 코드를 분할한다. 위의 다이어그램은 스프링 MVC 를 처음 시작하거나, 웹 프로그래밍에 경력이 좀 있다면 꽤 익숙할만한 패키지 구조이다. 각 클래스와 인터페이스는 다음과 같은 역할을 한다. OrdersController: 웹 컨트롤러, 웹 요청 처리 OrdersServ.. 2021. 2. 10.
UML - 패키지 다이어그램 - 구현 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 패키지 구현(Realization) 특정 패키지가 인터페이스를 정의하고 다른 몇 개의 패키지들이 구현하는 경우가 있다. 위의 다이어그램에서 데이터베이스 게이트웨이 패키지에서 인터페이스를 정의하고 나머지 Oracle, SQL Server, Test Stub 이 이를 구현하였다. 이렇게 사용자와 클래스 사이에 인터페이스가 낀다는건 의존성을 끊는다는 의미가 된다. 만약 여러가지 물건의 전원을 켜고 끄는 리모컨을 개발한다고 생각해보자. 여러가지 물건에 대해 작동이 되어야 하지만 의존성이 생기는것은 원하지 않을것이다. 위의 다이어그램에서 Button과 CheckBox는 OnOff 인터페이스에 의존하여 난로와 조명기구의 전원을 제.. 2021. 2. 10.
UML - 패키지 다이어그램 - 개요와 의존 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 패키지 다이어그램 UML 에서 패키지는 어떤 구성요소라도 더 높은 수준의 단위로 묶을 수 있도록 해주는 구조이다. 각각의 패키지는 네임스페이스를 나타내는데, 이는 모든 클래스가 자신이 속한 패키지내에서 유일해야 한다는 소리이다. 어떤 클래스가 어디에 속하는지를 완벽하게 알기 위해서는 완전한 이름(fully qualified name)을 사용해야 한다. UML 에서 패키지 이름을 나타낼때에는 :: 을 사용한다. Date는 System::Date 와 같이 될 것이다. - 패키지와 의존 규모가 큰 시스템에서는 패키지 다이어그램을 보아야 그 시스템의 구조를 제어할 수 있다. 패키지 다이어그램은 패키지간의 의존을 보여준다. A .. 2021. 2. 10.